ps_buffer/traits/
to_shared_buffer.rs

1use crate::{Buffer, BufferError, SharedBuffer};
2
3pub trait ToSharedBuffer {
4    /// Creates a new [`SharedBuffer`] containing the byte representation of `self`.
5    /// # Errors
6    /// - Returns [`BufferError`] if the allocation fails.
7    fn to_shared_buffer(self) -> Result<SharedBuffer, BufferError>;
8}
9
10impl<T: AsRef<[u8]>> ToSharedBuffer for T {
11    fn to_shared_buffer(self) -> Result<SharedBuffer, BufferError> {
12        Ok(Buffer::from_slice(self)?.share())
13    }
14}
15
16#[cfg(test)]
17mod tests {
18    use crate::BufferError;
19
20    use super::ToSharedBuffer;
21
22    #[test]
23    fn from_str() -> Result<(), BufferError> {
24        let str = "Hello, world!";
25        let buffer = str.to_shared_buffer()?;
26
27        assert_eq!(str.as_bytes(), &buffer[..], "Values should be equal.");
28
29        Ok(())
30    }
31}