Crates.io | libflate |
lib.rs | libflate |
version | 2.1.0 |
source | src |
created_at | 2016-10-16 20:25:53.769186 |
updated_at | 2024-04-30 12:28:20.726786 |
description | A Rust implementation of DEFLATE algorithm and related formats (ZLIB, GZIP) |
homepage | https://github.com/sile/libflate |
repository | https://github.com/sile/libflate |
max_upload_size | |
id | 6875 |
size | 256,598 |
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 = "2"
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=8.137013s, size=83259010
- flate2: elapsed=9.814607s, size=74692153
# DECODE (input_size=74217004)
- libflate: elapsed=1.354556s, size=277303937
- flate2: elapsed=0.960907s, size=277303937
- inflate: elapsed=1.926142s, size=277303937