3个版本
使用旧的Rust 2015
0.1.2 | 2018年12月2日 |
---|---|
0.1.1 | 2018年11月19日 |
0.1.0 | 2018年11月19日 |
#5 在 #flate2
417 每月下载量
11KB
230 行
flate2
一个基于Rust的流式压缩/解压缩库,提供基于DEFLATE的流。
该crate默认使用miniz_oxide
crate,它是miniz.c
的纯Rust移植。此crate还支持其他后端,如广泛使用的zlib库或高性能的zlib-ng库。
支持的格式
- deflate
- zlib
- gzip
# Cargo.toml
[dependencies]
flate2 = "1.0"
MSRV(最低支持的Rust版本)策略
此crate支持当前稳定版和最新版本的最后一个稳定版。例如,如果当前稳定版是1.64,则此crate支持1.64和1.63。较旧的稳定版可能仍然可以工作,但我们不能保证它们将继续工作。
压缩
use std::io::prelude::*;
use flate2::Compression;
use flate2::write::ZlibEncoder;
fn main() {
let mut e = ZlibEncoder::new(Vec::new(), Compression::default());
e.write_all(b"foo");
e.write_all(b"bar");
let compressed_bytes = e.finish();
}
解压缩
use std::io::prelude::*;
use flate2::read::GzDecoder;
fn main() {
let mut d = GzDecoder::new("...".as_bytes());
let mut s = String::new();
d.read_to_string(&mut s).unwrap();
println!("{}", s);
}
后端
默认的miniz_oxide
后端具有纯Rust的优势。如果您想获得最佳性能,可以使用zlib-ng C库
[dependencies]
flate2 = { version = "1.0.17", features = ["zlib-ng"], default-features = false }
请注意,即使您的crate图中的某些其他部分依赖于zlib,"zlib-ng"
功能仍然有效
但是,如果您已经在使用另一个依赖于zlib的C或Rust库,并且想要避免同时包含zlib和zlib-ng,则可以将其用于Rust代码
[dependencies]
flate2 = { version = "1.0.17", features = ["zlib"], default-features = false }
或者,如果您有依赖于zlib的C或Rust代码,并且想通过libz-sys以zlib-compat模式使用zlib-ng,请使用
[dependencies]
flate2 = { version = "1.0.17", features = ["zlib-ng-compat"], default-features = false }
请注意,当使用"zlib-ng-compat"
功能时,如果您的依赖图中的任何crate明确请求标准zlib,或者直接使用libz-sys而不具有default-features = false
,您将获得标准zlib而不是zlib-ng。有关详细信息,请参阅libz-sys的README。为了避免这种情况,请使用"zlib-ng"
功能。
为了与之前版本的 flate2
兼容,Cloudflare 提供了优化的 zlib 版本,通过 cloudflare_zlib
功能提供。它的速度不如 zlib-ng 快,但比原始的 zlib 快。它需要一个带有 SSE 4.2 的 x86-64 CPU 或带有 NEON & CRC 的 ARM64 CPU。它不支持 32 位 CPU,并且与 mingw 不兼容。更多信息请查看 crate 文档。注意,如果您的 crate 图中的任何其他 crate 使用另一个版本的 zlib/libz,则 cloudflare_zlib
将导致崩溃。
许可证
本项目可以在以下许可证中选择之一进行许可:
- Apache License 2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 https://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确说明,否则您提交给本项目以供包含在内的任何有意贡献,根据 Apache-2.0 许可证的定义,将按照上述双重许可方式许可,不附加任何额外条款或条件。
依赖项
~8KB