A streaming compression/decompression library for Rust. The underlying
implementation by default uses miniz
but
can optionally be configured to use the system zlib, if available.
There is also an experimental rust backend that uses the
miniz_oxide
crate. This avoids the need
to build C code, but hasn't gone through as much testing as the other backends.
Supported formats:
- deflate
- zlib
- gzip
# Cargo.toml
[dependencies]
flate2 = "0.2"
Using zlib instead of miniz:
[dependencies]
flate2 = { version = "0.2", features = ["zlib"], default-features = false }
Using the rust back-end:
[dependencies]
flate2 = { version = "0.2", features = ["rust_backend"], default-features = false }
extern crate flate2;
use std::io::prelude::*;
use flate2::Compression;
use flate2::write::ZlibEncoder;
fn main() {
let mut e = ZlibEncoder::new(Vec::new(), Compression::default());
e.write(b"foo");
e.write(b"bar");
let compressed_bytes = e.finish();
}
extern crate flate2;
use std::io::prelude::*;
use flate2::read::GzDecoder;
fn main() {
let mut d = GzDecoder::new("...".as_bytes());
let mut s = String::new();
d.read_to_string(&mut s).unwrap();
println!("{}", s);
}
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.