10个版本 (5个破坏性更新)
0.9.0 | 2023年12月8日 |
---|---|
0.8.3 | 2023年10月20日 |
0.8.1 | 2023年8月7日 |
0.8.0 | 2023年6月11日 |
0.5.0 | 2023年3月25日 |
#229 in 压缩
每月下载量 166次
在 2 crates 中使用
125KB
2.5K SLoC
bzip3-rs
这是对 bzip3 的Rust封装。
包特性
- bundled: 使用捆绑的libbzip3
当前捆绑的bzip3库版本是 kspalaiologos/[email protected].
lib.rs
:
BZip3-rs
BZip3对Rust的压缩支持。
BZip3文件结构
[ 魔数 ([u8; 5]) | 块大小 (i32) | block1 | block2 | blockN... ]
每个块的结构:[ 新大小 (i32) | 读取大小 (i32) | 数据 ]
由于来自原始bzip3库的命名,新大小
表示压缩后的数据大小,而 读取大小
表示原始数据大小。
示例
use std::io::Read;
use bzip3::read::{Bz3Decoder, Bz3Encoder};
let data = "hello, world".as_bytes();
let block_size = 100 * 1024; // 100 kiB
let mut compressor = Bz3Encoder::new(data, block_size).unwrap();
let mut decompressor = Bz3Decoder::new(&mut compressor).unwrap();
let mut contents = String::new();
decompressor.read_to_string(&mut contents).unwrap();
assert_eq!(contents, "hello, world");
依赖项
~0.4–2.8MB
~57K SLoC