8个版本
0.1.7 | 2022年6月6日 |
---|---|
0.1.6 | 2018年10月11日 |
0.1.5 | 2018年5月9日 |
0.1.4 | 2017年12月31日 |
0.1.0 | 2016年3月21日 |
#40 in 压缩
783,699 每月下载量
在 366 个crate(164直接) 中使用
1MB
25K SLoC
xz2
对Rust中liblzma实现的绑定,同时提供读取/写入xz流的类型。
# Cargo.toml
[dependencies]
xz2 = "0.1"
许可证
该项目可以在以下任一许可证下使用
- Apache许可证2.0版本,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任您选择。
贡献
除非您明确声明,否则任何有意提交到xz2的贡献,根据Apache-2.0许可证的定义,均应按上述方式双重许可,不附加任何额外条款或条件。
lib.rs
:
LZMA/XZ编码和解码流
此库是对liblzma的绑定,目前提供LZMA和xz编码/解码流。I/O流在read
、write
和bufread
模块中提供(相同类型,不同边界)。通过stream
模块提供原始内存压缩/解压缩,其中包含liblzma中的许多原始API。
示例
use std::io::prelude::*;
use xz2::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流
xz2 = { version = "0.1.6", features = ["tokio"] }
所有方法都可以在内部与可能返回ErrorKind::WouldBlock
的流一起工作,表示它们尚未准备好执行特定操作。
但是,在使用这些对象时需要小心。特别是,Tokio运行时要求在丢弃流之前完全刷新数据。为了与阻塞流兼容,所有流在丢弃时都会刷新/写入,这并不总是进行I/O的合适时间。然而,如果在丢弃之前刷新I/O流,则这些操作将不起作用。