#zstd #zstandard #api-bindings

zstd-reusectx

zstd压缩库的绑定,具有重用压缩上下文的能力

3个不稳定版本

0.15.1 2024年3月13日
0.15.0 2024年2月23日
0.14.0 2024年2月23日

#203 in 压缩

Download history 25/week @ 2024-04-30

137 每月下载量

MIT 许可证

97KB
2K SLoC

zstd

crates.io MIT licensed

Build on Linux Build on Windows Build on macOS Build on wasm

此库是zstd压缩库的Rust绑定。

文档

1 - 添加到 cargo.toml

$ cargo add zstd
# Cargo.toml

[dependencies]
zstd = "0.13"

2 - 使用方法

此库提供用于处理(解)压缩的 ReadWrite 包装器,以及使常见任务更容易的便利函数。

例如,stream::copy_encodestream::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