2个版本
使用旧的Rust 2015
0.1.1 | 2022年4月29日 |
---|---|
0.1.0 | 2022年4月2日 |
#668 in 压缩
190KB
4.5K SLoC
lzip
一个针对Rust的流式压缩/解压缩库,具有对lzlib的绑定。
# Cargo.toml
[dependencies]
lzip = "0.1"
许可协议
根据以下任一许可协议授权:
- Apache License, Version 2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
根据您的选择。
贡献
除非您明确声明,否则根据Apache-2.0许可协议定义的,您有意提交以包含在作品中的任何贡献,均将按上述方式双许可,不附加任何额外条款或条件。
lib.rs
:
Rust的lzip压缩
此库包含对lzlib的绑定,以支持Rust的lzip压缩和解压缩。此库提供的流主要位于reader
和writer
模块中。每个模块都提供压缩器和解压缩器,具体取决于您需要的操作。
示例
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