Deflate
Compress then decompress
flate2
provides DEFLATE compression and decompression, exposed as Read/BufRead/Write streams. flate2
uses a pure-Rust implementation by default. Use feature flags to opt in to system zlib
.
Supported formats:
- deflate
- zlib
- gzip
Compress, then decompress data:
use std::io::prelude::*;
use flate2::Compression;
use flate2::read::GzDecoder;
use flate2::write::ZlibEncoder;
fn compress() -> anyhow::Result<()> {
let mut e = ZlibEncoder::new(Vec::new(), Compression::default());
e.write_all(b"foo")?;
e.write_all(b"bar")?;
let _compressed_bytes = e.finish();
Ok(())
}
fn decompress() -> anyhow::Result<()> {
let mut d = GzDecoder::new("...".as_bytes());
let mut s = String::new();
d.read_to_string(&mut s)?;
println!("{}", s);
Ok(())
}
fn main() -> anyhow::Result<()> {
compress()?;
decompress()?;
Ok(())
}