zopfli

Struct DeflateEncoder

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

A DEFLATE encoder powered by the Zopfli algorithm that compresses data written to it to the specified sink. Most users will find using compress easier and more performant.

The data will be compressed as soon as possible, without trying to fill a backreference window. As a consequence, frequent short writes may cause more DEFLATE blocks to be emitted with less optimal Huffman trees, which can hurt compression and runtime. If they are a concern, short writes can be conveniently dealt with by wrapping this encoder with a BufWriter, as done by the new_buffered method. An adequate write size would be >32 KiB, which allows the second complete chunk to leverage a full-sized backreference window.

Implementations§

Source§

impl<W: Write> DeflateEncoder<W>

Source

pub fn new(options: Options, btype: BlockType, sink: W) -> Self

Creates a new Zopfli DEFLATE encoder that will operate according to the specified options.

Source

pub fn new_buffered( options: Options, btype: BlockType, sink: W, ) -> BufWriter<Self>

Creates a new Zopfli DEFLATE encoder that operates according to the specified options and is wrapped with a buffer to guarantee that data is compressed in large chunks, which is necessary for decent performance and good compression ratio.

Source

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

Encodes any pending chunks of data and writes them to the sink, consuming the encoder and returning the wrapped sink. The sink will have received a complete DEFLATE stream when this method returns.

The encoder is automatically finished when dropped, but explicitly finishing it with this method allows handling I/O errors.

Trait Implementations§

Source§

impl<W: Write> Drop for DeflateEncoder<W>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<W: Write> Write for DeflateEncoder<W>

Source§

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

Write a buffer into this writer, returning how many bytes were written. Read more
Source§

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

Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
Source§

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

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

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

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

impl<W: Write> Write for DeflateEncoder<W>

Source§

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

Writes a buffer into this writer, returning how many bytes were written. Read more
Source§

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

Flushes this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
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, fmt: 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 DeflateEncoder<W>
where W: Freeze,

§

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

§

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

§

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

§

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

§

impl<W> UnwindSafe for DeflateEncoder<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.