#gzip #zlib #deflate

无需std libflate

Rust实现的DEFLATE算法及相关格式(ZLIB、GZIP)

30个版本 (13个稳定版)

2.1.0 2024年4月30日
2.0.0 2023年7月8日
1.4.0 2023年5月21日
1.3.0 2023年2月16日
0.1.3 2016年11月30日

#10 in 压缩

Download history 117255/week @ 2024-05-02 122096/week @ 2024-05-09 129239/week @ 2024-05-16 138871/week @ 2024-05-23 130360/week @ 2024-05-30 126944/week @ 2024-06-06 135771/week @ 2024-06-13 129745/week @ 2024-06-20 127869/week @ 2024-06-27 119858/week @ 2024-07-04 123086/week @ 2024-07-11 140242/week @ 2024-07-18 140538/week @ 2024-07-25 129426/week @ 2024-08-01 147683/week @ 2024-08-08 140062/week @ 2024-08-15

每月580,375次下载
用于 874 个crate (178个直接使用)

MIT 许可证

250KB
5K SLoC

libflate

libflate Documentation Actions Status Coverage Status License: MIT

DEFLATE算法及相关格式(ZLIB、GZIP)的Rust实现。

文档

请参阅 RustDoc 文档

文档包含了一些示例。

安装

将以下行添加到您的 Cargo.toml

[dependencies]
libflate = "2"

示例

以下是从标准输入读取GZIP流的解码命令

extern crate libflate;

use std::io;
use libflate::gzip::Decoder;

fn main() {
    let mut input = io::stdin();
    let mut decoder = Decoder::new(&mut input).unwrap();
    io::copy(&mut decoder, &mut io::stdout()).unwrap();
}

非正式基准测试

flate2inflate 的简要比较

$ cd libflate/flate_bench/
$ curl -O https://dumps.wikimedia.org/enwiki/latest/enwiki-latest-all-titles-in-ns0.gz
$ gzip -d enwiki-latest-all-titles-in-ns0.gz
> ls -lh enwiki-latest-all-titles-in-ns0
-rw-rw-r-- 1 foo foo 265M May 18 05:19 enwiki-latest-all-titles-in-ns0

$ cargo run --release -- enwiki-latest-all-titles-in-ns0
# ENCODE (input_size=277303937)
- libflate: elapsed=8.137013s, size=83259010
-   flate2: elapsed=9.814607s, size=74692153

# DECODE (input_size=74217004)
- libflate: elapsed=1.354556s, size=277303937
-   flate2: elapsed=0.960907s, size=277303937
-  inflate: elapsed=1.926142s, size=277303937

参考文献

依赖关系

~2.5MB
~32K SLoC