Struct flate2::Compress

source ·
pub struct Compress { /* private fields */ }
Expand description

Raw in-memory compression stream for blocks of data.

This type is the building block for the I/O streams in the rest of this crate. It requires more management than the Read/Write API but is maximally flexible in terms of accepting input from any source and being able to produce output to any memory location.

It is recommended to use the I/O stream adaptors over this type as they’re easier to use.

Implementations§

source§

impl Compress

source

pub fn new(level: Compression, zlib_header: bool) -> Compress

Creates a new object ready for compressing data that it’s given.

The level argument here indicates what level of compression is going to be performed, and the zlib_header argument indicates whether the output data should have a zlib header or not.

source

pub fn new_with_window_bits( level: Compression, zlib_header: bool, window_bits: u8 ) -> Compress

Creates a new object ready for compressing data that it’s given.

The level argument here indicates what level of compression is going to be performed, and the zlib_header argument indicates whether the output data should have a zlib header or not. The window_bits parameter indicates the base-2 logarithm of the sliding window size and must be between 9 and 15.

Panics

If window_bits does not fall into the range 9 ..= 15, new_with_window_bits will panic.

Note

This constructor is only available when the zlib feature is used. Other backends currently do not support custom window bits.

source

pub fn new_gzip(level: Compression, window_bits: u8) -> Compress

Creates a new object ready for compressing data that it’s given.

The level argument here indicates what level of compression is going to be performed.

The Compress object produced by this constructor outputs gzip headers for the compressed data.

Panics

If window_bits does not fall into the range 9 ..= 15, new_with_window_bits will panic.

Note

This constructor is only available when the zlib feature is used. Other backends currently do not support gzip headers for Compress.

source

pub fn total_in(&self) -> u64

Returns the total number of input bytes which have been processed by this compression object.

source

pub fn total_out(&self) -> u64

Returns the total number of output bytes which have been produced by this compression object.

source

pub fn set_dictionary( &mut self, dictionary: &[u8] ) -> Result<u32, CompressError>

Specifies the compression dictionary to use.

Returns the Adler-32 checksum of the dictionary.

source

pub fn reset(&mut self)

Quickly resets this compressor without having to reallocate anything.

This is equivalent to dropping this object and then creating a new one.

source

pub fn set_level(&mut self, level: Compression) -> Result<(), CompressError>

Dynamically updates the compression level.

This can be used to switch between compression levels for different kinds of data, or it can be used in conjunction with a call to reset to reuse the compressor.

This may return an error if there wasn’t enough output space to complete the compression of the available input data before changing the compression level. Flushing the stream before calling this method ensures that the function will succeed on the first call.

source

pub fn compress( &mut self, input: &[u8], output: &mut [u8], flush: FlushCompress ) -> Result<Status, CompressError>

Compresses the input data into the output, consuming only as much input as needed and writing as much output as possible.

The flush option can be any of the available FlushCompress parameters.

To learn how much data was consumed or how much output was produced, use the total_in and total_out functions before/after this is called.

source

pub fn compress_vec( &mut self, input: &[u8], output: &mut Vec<u8>, flush: FlushCompress ) -> Result<Status, CompressError>

Compresses the input data into the extra space of the output, consuming only as much input as needed and writing as much output as possible.

This function has the same semantics as compress, except that the length of vec is managed by this function. This will not reallocate the vector provided or attempt to grow it, so space for the output must be reserved in the output vector by the caller before calling this function.

Trait Implementations§

source§

impl Debug for Compress

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.