pub struct PuffinWriter<W: Write + Seek> { /* private fields */ }Expand description
Streaming writer for Puffin files.
Wraps any Write + Seek sink. The magic header is written lazily on the
first blob (or finish); call PuffinWriter::finish to flush the footer
and recover the inner writer.
§Examples
use std::io::Cursor;
use samkhya_core::puffin::{Blob, PuffinReader, PuffinWriter};
let mut writer = PuffinWriter::new(Cursor::new(Vec::<u8>::new()));
writer.add_blob(Blob::new("samkhya.test-v1", vec![0], b"hello")).unwrap();
let cursor = writer.finish().unwrap();
// Round-trip: open the bytes back as a reader.
let reader = PuffinReader::open(Cursor::new(cursor.into_inner())).unwrap();
assert_eq!(reader.blobs().len(), 1);Implementations§
Source§impl<W: Write + Seek> PuffinWriter<W>
impl<W: Write + Seek> PuffinWriter<W>
pub fn new(inner: W) -> Self
Sourcepub fn add_blob(&mut self, blob: Blob<'_>) -> Result<()>
pub fn add_blob(&mut self, blob: Blob<'_>) -> Result<()>
Append a blob to the file.
§Examples
use std::io::Cursor;
use samkhya_core::puffin::{Blob, PuffinWriter};
let mut writer = PuffinWriter::new(Cursor::new(Vec::<u8>::new()));
writer.add_blob(Blob::new("samkhya.test-v1", vec![0], b"payload")).unwrap();
let _bytes = writer.finish().unwrap().into_inner();Sourcepub fn add_blob_compressed(
&mut self,
blob: Blob<'_>,
codec: CompressionCodec,
) -> Result<()>
pub fn add_blob_compressed( &mut self, blob: Blob<'_>, codec: CompressionCodec, ) -> Result<()>
Append a blob with payload compressed under codec.
CompressionCodec::None is equivalent to Self::add_blob.
CompressionCodec::Zstd requires the zstd feature; otherwise this
returns an Error::InvalidPuffin explaining the missing feature.
Auto Trait Implementations§
impl<W> Freeze for PuffinWriter<W>where
W: Freeze,
impl<W> RefUnwindSafe for PuffinWriter<W>where
W: RefUnwindSafe,
impl<W> Send for PuffinWriter<W>where
W: Send,
impl<W> Sync for PuffinWriter<W>where
W: Sync,
impl<W> Unpin for PuffinWriter<W>where
W: Unpin,
impl<W> UnsafeUnpin for PuffinWriter<W>where
W: UnsafeUnpin,
impl<W> UnwindSafe for PuffinWriter<W>where
W: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more