ps_datachunk/mbuf/
mod.rs

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