#zlib #gzip #flate

deflate

用Rust编写的DEFLATE、zlib和gzip编码器

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 2016年11月24日

#30 in 压缩

Download history 51267/week @ 2024-03-14 55630/week @ 2024-03-21 64503/week @ 2024-03-28 48705/week @ 2024-04-04 54229/week @ 2024-04-11 52248/week @ 2024-04-18 56461/week @ 2024-04-25 51351/week @ 2024-05-02 53042/week @ 2024-05-09 58453/week @ 2024-05-16 60185/week @ 2024-05-23 58585/week @ 2024-05-30 58218/week @ 2024-06-06 55800/week @ 2024-06-13 56411/week @ 2024-06-20 45788/week @ 2024-06-27

225,225 每月下载量
用于 101 个crate(38个直接使用)

MIT/Apache

240KB
4.5K SLoC

deflate-rs

Build StatusCrates.ioDocs

一个纯Rust实现的DEFLATE编码器。不是直接移植,但借鉴了zlibminizzopfli。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许可证下使用。

依赖