#xz #encoding #lzma #api-bindings

xz2

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

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 压缩

Download history 134914/week @ 2024-03-14 129720/week @ 2024-03-21 123508/week @ 2024-03-28 124101/week @ 2024-04-04 116885/week @ 2024-04-11 101496/week @ 2024-04-18 106262/week @ 2024-04-25 96472/week @ 2024-05-02 106859/week @ 2024-05-09 170641/week @ 2024-05-16 175586/week @ 2024-05-23 168738/week @ 2024-05-30 183641/week @ 2024-06-06 167057/week @ 2024-06-13 215624/week @ 2024-06-20 183242/week @ 2024-06-27

783,699 每月下载量
366 个crate(164直接) 中使用

MIT/Apache

1MB
25K SLoC

C 18K SLoC // 0.2% comments Visual Studio Project 2K SLoC Rust 1.5K SLoC // 0.0% comments M4 725 SLoC // 0.4% comments Automake 560 SLoC // 0.2% comments Shell 332 SLoC // 0.3% comments GNU Style Assembly 294 SLoC // 0.4% comments BASH 244 SLoC // 0.3% comments Bitbake 221 SLoC // 0.2% comments Visual Studio Solution 146 SLoC

xz2

文档

对Rust中liblzma实现的绑定,同时提供读取/写入xz流的类型。

# Cargo.toml
[dependencies]
xz2 = "0.1"

许可证

该项目可以在以下任一许可证下使用

任您选择。

贡献

除非您明确声明,否则任何有意提交到xz2的贡献,根据Apache-2.0许可证的定义,均应按上述方式双重许可,不附加任何额外条款或条件。


lib.rs:

LZMA/XZ编码和解码流

此库是对liblzma的绑定,目前提供LZMA和xz编码/解码流。I/O流在readwritebufread模块中提供(相同类型,不同边界)。通过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流,则这些操作将不起作用。

依赖项