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 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 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.