Skip to main content

ZstdStreamEncoder

Struct ZstdStreamEncoder 

Source
pub struct ZstdStreamEncoder<W: Write> { /* private fields */ }
Expand description

Streaming Zstandard encoder that implements Write.

Data written to this encoder is buffered internally. When the internal buffer reaches block_size bytes it is automatically flushed as a complete Zstandard frame to the inner writer (truly incremental). Any remaining data is flushed when finish is called.

The output is a sequence of valid concatenated Zstandard frames and can be decoded with decompress_multi_frame.

Important: you must call finish to flush the final (possibly partial) block. Dropping the encoder without calling finish will silently discard any buffered data.

Implementations§

Source§

impl<W: Write> ZstdStreamEncoder<W>

Source

pub fn new(writer: W, level: i32) -> Self

Create a new streaming encoder wrapping writer.

The level parameter controls the compression level passed to the underlying ZstdEncoder. The encoder uses a default block size of 128 KiB; use with_block_size to customise this.

Source

pub fn with_dictionary(writer: W, level: i32, dict: Vec<u8>) -> Self

Create a new streaming encoder with a pre-trained dictionary.

Dictionary-based compression improves ratios for small payloads that share common patterns.

Source

pub fn with_block_size(self, block_size: usize) -> Self

Set the block size used for incremental flushing.

When the internal buffer reaches this many bytes it is automatically compressed and written to the inner writer as a Zstandard frame.

Source

pub fn finish(self) -> Result<W>

Finish compression and return the inner writer.

This must be called to flush the final compressed data. Failing to call finish means all buffered data is lost.

§Errors

Returns an io::Error if compression or writing to the inner writer fails.

Source

pub fn buffered_bytes(&self) -> usize

Returns the number of uncompressed bytes currently buffered.

Source

pub fn is_finished(&self) -> bool

Returns true if finish has already been called.

Trait Implementations§

Source§

impl<W: Write> Write for ZstdStreamEncoder<W>

Source§

fn write(&mut self, buf: &[u8]) -> Result<usize>

Buffer buf and flush a frame to the inner writer whenever the internal buffer reaches block_size.

Source§

fn flush(&mut self) -> Result<()>

Flush any buffered data as a Zstandard frame to the inner writer.

1.36.0 · Source§

fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<usize, Error>

Like write, except that it writes from a slice of buffers. Read more
Source§

fn is_write_vectored(&self) -> bool

🔬This is a nightly-only experimental API. (can_vector)
Determines if this Writer has an efficient write_vectored implementation. Read more
1.0.0 · Source§

fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>

Attempts to write an entire buffer into this writer. Read more
Source§

fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>

🔬This is a nightly-only experimental API. (write_all_vectored)
Attempts to write multiple buffers into this writer. Read more
1.0.0 · Source§

fn write_fmt(&mut self, args: Arguments<'_>) -> Result<(), Error>

Writes a formatted string into this writer, returning any error encountered. Read more
1.0.0 · Source§

fn by_ref(&mut self) -> &mut Self
where Self: Sized,

Creates a “by reference” adapter for this instance of Write. Read more

Auto Trait Implementations§

§

impl<W> Freeze for ZstdStreamEncoder<W>
where W: Freeze,

§

impl<W> RefUnwindSafe for ZstdStreamEncoder<W>
where W: RefUnwindSafe,

§

impl<W> Send for ZstdStreamEncoder<W>
where W: Send,

§

impl<W> Sync for ZstdStreamEncoder<W>
where W: Sync,

§

impl<W> Unpin for ZstdStreamEncoder<W>
where W: Unpin,

§

impl<W> UnsafeUnpin for ZstdStreamEncoder<W>
where W: UnsafeUnpin,

§

impl<W> UnwindSafe for ZstdStreamEncoder<W>
where W: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.