ps_datachunk/mbuf/
mod.rs

1mod implementations;
2
3use std::sync::Arc;
4
5use ps_hash::Hash;
6use ps_mbuf::Mbuf;
7
8use crate::DataChunk;
9
10#[derive(Clone, Copy)]
11pub struct MbufDataChunk<'lt> {
12    inner: &'lt Mbuf<'lt, Hash, u8>,
13}
14
15impl<'lt> From<&'lt Mbuf<'lt, Hash, u8>> for MbufDataChunk<'lt> {
16    fn from(inner: &'lt Mbuf<'lt, Hash, u8>) -> Self {
17        Self { inner }
18    }
19}
20
21impl DataChunk for MbufDataChunk<'_> {
22    fn data_ref(&self) -> &[u8] {
23        self.inner
24    }
25
26    fn hash_ref(&self) -> &Hash {
27        self.inner.get_metadata()
28    }
29
30    fn hash(&self) -> Arc<Hash> {
31        Arc::from(*self.inner.get_metadata())
32    }
33
34    /// Transforms this chunk into an [`OwnedDataChunk`]
35    fn into_owned(self) -> crate::OwnedDataChunk {
36        crate::OwnedDataChunk::from_data_and_hash(Arc::from(self.data_ref()), self.hash())
37    }
38}