#gzip #zlib #flate2 #format #deflate #zlib-ng #deprecated

flate2-crc

用于gzip格式的CRC-32校验和的SIMD加速,已被crc32fastcrate取代

3个版本

使用旧的Rust 2015

0.1.2 2018年12月2日
0.1.1 2018年11月19日
0.1.0 2018年11月19日

#5#flate2

Download history 101/week @ 2023-11-19 67/week @ 2023-11-26 46/week @ 2023-12-03 80/week @ 2023-12-10 92/week @ 2023-12-17 60/week @ 2023-12-24 20/week @ 2023-12-31 85/week @ 2024-01-07 84/week @ 2024-01-14 64/week @ 2024-01-21 38/week @ 2024-01-28 41/week @ 2024-02-04 78/week @ 2024-02-11 120/week @ 2024-02-18 123/week @ 2024-02-25 91/week @ 2024-03-03

417 每月下载量

MIT/Apache

11KB
230

flate2

Crates.io Documentation

一个基于Rust的流式压缩/解压缩库,提供基于DEFLATE的流。

该crate默认使用miniz_oxidecrate,它是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-2.0 许可证的定义,将按照上述双重许可方式许可,不附加任何额外条款或条件。

依赖项

~8KB