Struct GzDecoder

struct GzDecoder<W: Write> { ... }

A decoder for a single member of a gzip file.

This structure exposes a Write interface, receiving compressed data and writing uncompressed data to the underlying writer.

After decoding a single member of the gzip data this writer will return the number of bytes up to to the end of the gzip member and subsequent writes will return Ok(0) allowing the caller to handle any data following the gzip member.

To handle gzip files that may have multiple members, see MultiGzDecoder or read more in the introduction.

Examples

use std::io::prelude::*;
use std::io;
use flate2::Compression;
use flate2::write::{GzEncoder, GzDecoder};

# fn main() {
#    let mut e = GzEncoder::new(Vec::new(), Compression::default());
#    e.write(b"Hello World").unwrap();
#    let bytes = e.finish().unwrap();
#    assert_eq!("Hello World", decode_writer(bytes).unwrap());
# }
// Uncompresses a gzip encoded vector of bytes and returns a string or error
// Here Vec<u8> implements Write
fn decode_writer(bytes: Vec<u8>) -> io::Result<String> {
   let mut writer = Vec::new();
   let mut decoder = GzDecoder::new(writer);
   decoder.write_all(&bytes[..])?;
   writer = decoder.finish()?;
   let return_string = String::from_utf8(writer).expect("String parsing error");
   Ok(return_string)
}

Implementations

impl<W: Write> GzDecoder<W>

fn new(w: W) -> GzDecoder<W>

Creates a new decoder which will write uncompressed data to the stream.

When this encoder is dropped or unwrapped the final pieces of data will be flushed.

fn header(self: &Self) -> Option<&GzHeader>

Returns the header associated with this stream.

fn get_ref(self: &Self) -> &W

Acquires a reference to the underlying writer.

fn get_mut(self: &mut Self) -> &mut W

Acquires a mutable reference to the underlying writer.

Note that mutating the output/input state of the stream may corrupt this object, so care must be taken when using this method.

fn try_finish(self: &mut Self) -> Result<()>

Attempt to finish this output stream, writing out final chunks of data.

Note that this function can only be used once data has finished being written to the output stream. After this function is called then further calls to write may result in a panic.

Panics

Attempts to write data to this stream may result in a panic after this function is called.

Errors

This function will perform I/O to finish the stream, returning any errors which happen.

fn finish(self: Self) -> Result<W>

Consumes this decoder, flushing the output stream.

This will flush the underlying data stream and then return the contained writer if the flush succeeded.

Note that this function may not be suitable to call in a situation where the underlying stream is an asynchronous I/O stream. To finish a stream the try_finish (or shutdown) method should be used instead. To re-acquire ownership of a stream it is safe to call this method after try_finish or shutdown has returned Ok.

Errors

This function will perform I/O to complete this stream, and any I/O errors which occur will be returned from this function.

impl<T> Any for GzDecoder<W>

fn type_id(self: &Self) -> TypeId

impl<T> Borrow for GzDecoder<W>

fn borrow(self: &Self) -> &T

impl<T> BorrowMut for GzDecoder<W>

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

impl<T> From for GzDecoder<W>

fn from(t: T) -> T

Returns the argument unchanged.

impl<T, U> Into for GzDecoder<W>

fn into(self: Self) -> U

Calls U::from(self).

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

impl<T, U> TryFrom for GzDecoder<W>

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

impl<T, U> TryInto for GzDecoder<W>

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

impl<W> Freeze for GzDecoder<W>

impl<W> RefUnwindSafe for GzDecoder<W>

impl<W> Send for GzDecoder<W>

impl<W> Sync for GzDecoder<W>

impl<W> Unpin for GzDecoder<W>

impl<W> UnsafeUnpin for GzDecoder<W>

impl<W> UnwindSafe for GzDecoder<W>

impl<W: $crate::fmt::Debug + Write> Debug for GzDecoder<W>

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

impl<W: Read + Write> Read for GzDecoder<W>

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

impl<W: Write> Write for GzDecoder<W>

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