So far, deflate encoding with and without zlib metadata (no zlib dictionary or gzip support yet) has been is implemented. No unsafe code has been used. Speed-wise it's not quite up to miniz-levels yet.
Simple compression function:
use deflate::deflate_bytes; let data = b"Some data"; let compressed = deflate_bytes(&data);
Using a writer:
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();
Other deflate/zlib rust projects from various people
- libflate Bindings to miniz.c that are part of the rust distribution.
- flate2 FLATE, Gzip, and Zlib bindings for Rust
- Zopfli in Rust Rust port of zopfli
- inflate DEFLATE decoder implemented in rust
- miniz-rs Direct rust translation of miniz.c
- libflate (Not to be confused by libflate in the rust standard library) 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
The test data (src/pg11.txt) is borrowed from Project Gutenberg and is available under public domain, or the Project Gutenberg Licence