|0.7.20||Jun 30, 2019|
|0.7.19||Sep 30, 2018|
|0.7.18||Mar 25, 2018|
|0.7.17||Sep 22, 2017|
#11 in Compression
40,732 downloads per month
Used in 17 crates (8 directly)
An implementation of a DEFLATE encoder in pure rust. Not a direct port, but does take some inspiration from zlib, miniz and zopfli. The API is based on the one in the flate2 crate that contains bindings to zlib and miniz.
So far, deflate encoding with and without zlib and gzip metadata (zlib dictionaryies are not supported yet) has been is implemented. Speed-wise it's not quite up to miniz-levels yet (between 10% and twice as slow for most files, seems to be slow on very small files, close to miniz on larger ones).
use deflate::deflate_bytes; let data = b"Some data"; let compressed = deflate_bytes(&data);
use std::io::Write; use deflate::Compression; use deflate::write::ZlibEncoder; let data = b"This is some test data"; let mut encoder = ZlibEncoder::new(Vec::new(), Compression::Default); encoder.write_all(data).unwrap(); let compressed_data = encoder.finish().unwrap();
- flate2 FLATE, Gzip, and Zlib bindings for Rust
- Zopfli in Rust Rust port of zopfli
- inflate DEFLATE decoder implemented in rust
- miniz-oxide Port of miniz to rust.
- miniz-rs Older rust translation of miniz.
- libflate Another DEFLATE/Zlib/Gzip encoder and decoder written in Rust. (Only does some very light compression).
deflate is distributed under the terms of both the MIT and Apache 2.0 licences.
bitstream.rs is © @nwin and was released under both MIT and Apache 2.0
Some code in length_encode.rs has been ported from the
miniz library, which is public domain.
The test data (src/pg11.txt) is borrowed from Project Gutenberg and is available under public domain, or the Project Gutenberg Licence