#解压缩 #编码

bzip3

BZip3压缩库

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

Download history 4/week @ 2024-04-22 14/week @ 2024-05-27 1/week @ 2024-06-03 1/week @ 2024-06-10 1/week @ 2024-07-01 166/week @ 2024-07-29

每月下载量 166次
2 crates 中使用

LGPL-3.0-only

125KB
2.5K SLoC

C 1.5K SLoC // 0.1% comments Rust 700 SLoC // 0.0% comments M4 311 SLoC // 0.5% comments Automake 56 SLoC // 0.0% comments Shell 17 SLoC // 0.1% comments

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