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 压缩
每月580,375次下载
用于 874 个crate (178个直接使用)
250KB
5K SLoC
libflate
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();
}
非正式基准测试
$ 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