libflate 0.1.0

A Rust implementation of DEFLATE algorithm and related formats (ZLIB, GZIP)
Documentation

libflate

libflate Build Status License: MIT

A Rust implementation of DEFLATE algorithm and related formats (ZLIB, GZIP).

Documentation

See RustDoc Documentation.

The documentation includes some examples.

Installation

Add following lines to your Cargo.toml:

[dependencies]
libflate = "0.1"

An Example

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();
}

An Informal Benchmark

A brief comparison with flate2:

$ 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-rw- 1 foo foo 257M 10月  3 17:22 enwiki-latest-all-titles-in-ns0

$ cargo run --release -- enwiki-latest-all-titles-in-ns0
# ENCODE (input_size=268799390)
- libflate: elapsed= 6.487679s, size=93326863
-   flate2: elapsed=10.715379s, size=72043928

# DECODE (input_size=72043928)
- libflate: elapsed=1.711679s, size=268799390
-   flate2: elapsed=0.975283s, size=268799390

References