Struct flate2::Decompress
source · pub struct Decompress { /* private fields */ }
Expand description
Raw in-memory decompression 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 Decompress
impl Decompress
sourcepub fn new(zlib_header: bool) -> Decompress
pub fn new(zlib_header: bool) -> Decompress
Creates a new object ready for decompressing data that it’s given.
The zlib_header
argument indicates whether the input data is expected
to have a zlib header or not.
sourcepub fn new_with_window_bits(zlib_header: bool, window_bits: u8) -> Decompress
pub fn new_with_window_bits(zlib_header: bool, window_bits: u8) -> Decompress
Creates a new object ready for decompressing data that it’s given.
The zlib_header
argument indicates whether the input data is expected
to 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.
sourcepub fn new_gzip(window_bits: u8) -> Decompress
pub fn new_gzip(window_bits: u8) -> Decompress
Creates a new object ready for decompressing data that it’s given.
The Decompress object produced by this constructor expects 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 Decompress.
sourcepub fn total_in(&self) -> u64
pub fn total_in(&self) -> u64
Returns the total number of input bytes which have been processed by this decompression object.
sourcepub fn total_out(&self) -> u64
pub fn total_out(&self) -> u64
Returns the total number of output bytes which have been produced by this decompression object.
sourcepub fn decompress(
&mut self,
input: &[u8],
output: &mut [u8],
flush: FlushDecompress
) -> Result<Status, DecompressError>
pub fn decompress( &mut self, input: &[u8], output: &mut [u8], flush: FlushDecompress ) -> Result<Status, DecompressError>
Decompresses 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 FlushDecompress
parameters.
If the first call passes FlushDecompress::Finish
it is assumed that
the input and output buffers are both sized large enough to decompress
the entire stream in a single call.
A flush value of FlushDecompress::Finish
indicates that there are no
more source bytes available beside what’s already in the input buffer,
and the output buffer is large enough to hold the rest of the
decompressed data.
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.
Errors
If the input data to this instance of Decompress
is not a valid
zlib/deflate stream then this function may return an instance of
DecompressError
to indicate that the stream of input bytes is corrupted.
sourcepub fn decompress_vec(
&mut self,
input: &[u8],
output: &mut Vec<u8>,
flush: FlushDecompress
) -> Result<Status, DecompressError>
pub fn decompress_vec( &mut self, input: &[u8], output: &mut Vec<u8>, flush: FlushDecompress ) -> Result<Status, DecompressError>
Decompresses the input data into the extra space in the output vector
specified by output
.
This function has the same semantics as decompress
, 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.
Errors
If the input data to this instance of Decompress
is not a valid
zlib/deflate stream then this function may return an instance of
DecompressError
to indicate that the stream of input bytes is corrupted.
sourcepub fn set_dictionary(
&mut self,
dictionary: &[u8]
) -> Result<u32, DecompressError>
pub fn set_dictionary( &mut self, dictionary: &[u8] ) -> Result<u32, DecompressError>
Specifies the decompression dictionary to use.
sourcepub fn reset(&mut self, zlib_header: bool)
pub fn reset(&mut self, zlib_header: bool)
Performs the equivalent of replacing this decompression state with a freshly allocated copy.
This function may not allocate memory, though, and attempts to reuse any previously existing resources.
The argument provided here indicates whether the reset state will attempt to decode a zlib header first or not.