#stream #bindings #reader-writer #encoding #api-bindings #exposed #lzlib

lzip

将lzlib的绑定暴露为Reader/Writer流进行lzip压缩和解压缩

2个版本

使用旧的Rust 2015

0.1.1 2022年4月29日
0.1.0 2022年4月2日

#668 in 压缩

MIT/Apache

190KB
4.5K SLoC

C 3.5K SLoC // 0.1% comments Shell 399 SLoC // 0.0% comments Rust 272 SLoC

lzip

文档

一个针对Rust的流式压缩/解压缩库,具有对lzlib的绑定。

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

许可协议

根据以下任一许可协议授权:

根据您的选择。

贡献

除非您明确声明,否则根据Apache-2.0许可协议定义的,您有意提交以包含在作品中的任何贡献,均将按上述方式双许可,不附加任何额外条款或条件。


lib.rs:

Rust的lzip压缩

此库包含对lzlib的绑定,以支持Rust的lzip压缩和解压缩。此库提供的流主要位于readerwriter模块中。每个模块都提供压缩器和解压缩器,具体取决于您需要的操作。

示例

use std::io::prelude::*;
use lzip::read::{LzEncoder, LzDecoder};

// 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 = LzEncoder::new(data, 9);
let mut decompressor = LzDecoder::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流

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

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

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

依赖项

~0.4–445KB