3个不稳定版本
0.15.1 | 2024年3月13日 |
---|---|
0.15.0 | 2024年2月23日 |
0.14.0 | 2024年2月23日 |
#203 in 压缩
137 每月下载量
97KB
2K SLoC
zstd
此库是zstd压缩库的Rust绑定。
文档
1 - 添加到 cargo.toml
$ cargo add zstd
# Cargo.toml
[dependencies]
zstd = "0.13"
2 - 使用方法
此库提供用于处理(解)压缩的 Read
和 Write
包装器,以及使常见任务更容易的便利函数。
例如,stream::copy_encode
和 stream::copy_decode
是围绕 std::io::copy
的易于使用的包装器。请参阅 stream 示例
use std::io;
// This function use the convenient `copy_encode` method
fn compress(level: i32) {
zstd::stream::copy_encode(io::stdin(), io::stdout(), level).unwrap();
}
// This function does the same thing, directly using an `Encoder`:
fn compress_manually(level: i32) {
let mut encoder = zstd::stream::Encoder::new(io::stdout(), level).unwrap();
io::copy(&mut io::stdin(), &mut encoder).unwrap();
encoder.finish().unwrap();
}
fn decompress() {
zstd::stream::copy_decode(io::stdin(), io::stdout()).unwrap();
}
异步支持
async-compression
包提供各种压缩算法的异步集成,包括 zstd-rs
。
自行编译
zstd
作为子模块包含在内。要在克隆过程中获取所有内容,请使用
git clone https://github.com/gyscos/zstd-rs --recursive
或者,如果您在没有 --recursive
标志的情况下克隆,请在仓库内部调用此命令
git submodule update --init
然后,运行 cargo build
应该会处理构建C库并将其链接到它。
构建时bindgen
此库包含预生成的 bindings.rs
文件。您也可以在构建时使用 bindgen
功能生成新绑定
cargo build --features bindgen
待办事项
- 基准测试,优化...
免责声明
此实现主要受到bozaro的 lz4-rs 的启发。
许可证
- zstd C库在BSD/GPLv2许可证下。
- 此zstd-rs绑定库在 MIT 许可证下。
依赖项
~2.6–4MB
~58K SLoC