A Rust implementation of DEFLATE algorithm and related formats (ZLIB, GZIP).
The documentation includes some examples.
Add following lines to your Cargo.toml
:
[dependencies] libflate = "0.1"
Below is a command to decode GZIP stream that is read from the standard input:
extern crate libflate; use std::io; use libflate::gzip::Decoder; fn main() { let mut input = io::stdin(); let mut decoder = Decoder::new(&mut input).unwrap(); io::copy(&mut decoder, &mut io::stdout()).unwrap(); }
A brief comparison with flate2 and inflate:
$ cd libflate/flate_bench/ $ curl -O https://dumps.wikimedia.org/enwiki/latest/enwiki-latest-all-titles-in-ns0.gz $ gzip -d enwiki-latest-all-titles-in-ns0.gz > ls -lh enwiki-latest-all-titles-in-ns0 -rw-rw-r-- 1 foo foo 265M May 18 05:19 enwiki-latest-all-titles-in-ns0 $ cargo run --release -- enwiki-latest-all-titles-in-ns0 # ENCODE (input_size=277303937) - libflate: elapsed=6.704266s, size=96128630 - flate2: elapsed=11.437189s, size=74217004 # DECODE (input_size=74217004) - libflate: elapsed=1.354556s, size=277303937 - flate2: elapsed=0.960907s, size=277303937 - inflate: elapsed=1.926142s, size=277303937