29个版本 (1个稳定版)
1.0.0 | 2021年11月10日 |
---|---|
0.9.1 | 2021年3月24日 |
0.9.0 | 2021年1月21日 |
0.8.6 | 2020年7月6日 |
0.6.0 |
|
#30 in 压缩
225,225 每月下载量
用于 101 个crate(38个直接使用)
240KB
4.5K SLoC
deflate-rs
一个纯Rust实现的DEFLATE编码器。不是直接移植,但借鉴了zlib、miniz和zopfli。API基于包含绑定、zlib、miniz_oxide和miniz的flate2 crate。
支持带有和没有zlib和gzip元数据的DEFLATE编码(不支持zlib字典)。不使用不安全代码。
以gzip格式编码需要启用'gzip'功能。
此库现在主要处于维护模式,重点是flate2的Rust后端。
由于使用库函数进行端序转换,所需的最低Rust版本为1.32.0(单元测试需要更高版本)。
用法
简单的压缩函数
use deflate::deflate_bytes;
let data = b"Some data";
let compressed = deflate_bytes(&data);
使用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();
其他来自不同人的deflate/zlib Rust项目
- flate2 FLATE、Gzip和Zlib的Rust绑定 - 可以使用miniz_oxide进行纯Rust实现。
- Zopfli in Rust zopfli的Rust移植
- inflate DEFLATE解码器,用Rust实现
- miniz-oxide 将miniz移植到Rust。
- libflate 另一个用Rust编写的DEFLATE/Zlib/Gzip编码器和解码器。(仅进行一些非常轻度的压缩)
许可
deflate根据MIT和Apache 2.0许可证的条款分发。
bitstream.rs由@nwin所有,并根据MIT和Apache 2.0许可证发布。
length_encode.rs中的某些代码已从公共领域的miniz库移植。
测试数据(tests/pg11.txt)从Project Gutenberg借用,可在公共领域或Project Gutenberg许可证下使用。