#lzma #encoding #api-bindings

xz

Rust对liblzma的绑定,提供读写流以及低级内存编码/解码。是xz2crate的别名

2个不稳定版本

0.1.0 2020年8月17日
0.0.1 2015年2月12日

303压缩 中排名

Download history 4335/week @ 2024-03-14 4095/week @ 2024-03-21 4086/week @ 2024-03-28 4426/week @ 2024-04-04 4299/week @ 2024-04-11 4426/week @ 2024-04-18 4741/week @ 2024-04-25 4494/week @ 2024-05-02 2277/week @ 2024-05-09 2759/week @ 2024-05-16 2508/week @ 2024-05-23 2447/week @ 2024-05-30 2537/week @ 2024-06-06 2642/week @ 2024-06-13 2762/week @ 2024-06-20 1939/week @ 2024-06-27

每月下载量 10,246
41 个crate(直接使用26个) 中使用

MIT/Apache

77KB
1K SLoC

xz-rs crate版本

Rust提供的流压缩/解压缩库,具有liblzma的绑定。目前它是xz2crate的别名。有关更多详细信息,请参阅文档

[dependencies]
xz = "0.1"

 


xz-rs主要在Apache许可证(版本2.0)MIT许可证的条款下分发。有关详细信息,请参阅COPYRIGHT


lib.rs:

LZMA/XZ编码和解码流

该库是liblzma的绑定,目前提供LZMA和xz编码/解码流。在readwritebufread模块中提供I/O流(相同类型,不同界限)。通过stream模块提供原始内存压缩/解压缩,其中包含liblzma中的许多原始API。

示例

use std::io::prelude::*;
use xz::read::{XzEncoder, XzDecoder};

// Round trip some bytes from a byte source, into a compressor, into a
// decompressor, and finally into a vector.
let data = "Hello, World!".as_bytes();
let compressor = XzEncoder::new(data, 9);
let mut decompressor = XzDecoder::new(compressor);

let mut contents = String::new();
decompressor.read_to_string(&mut contents).unwrap();
assert_eq!(contents, "Hello, World!");

异步I/O

此crate可以通过此crate的tokio功能选择性地支持通过Tokio堆栈的异步I/O流

xz = { version = "0.1", features = ["tokio"] }

所有方法都可以内部处理可能返回ErrorKind::WouldBlock的流,当它们尚未准备好执行特定操作时。

请注意,在使用这些对象时需要小心。特别是,Tokio运行时要求在删除流之前数据必须完全刷新。为了与阻塞流兼容,所有流在删除时都会刷新/写入,这并不总是进行I/O的合适时间。但是,如果在进行删除之前刷新I/O流,则这些操作将不执行任何操作。

注意

目前,xzcrate是xz2crate的别名。

依赖关系

~1.5MB
~30K SLoC