11 releases (6 breaking)
new 0.11.0 | Dec 18, 2024 |
---|---|
0.9.0 | Dec 8, 2023 |
0.8.3 | Oct 20, 2023 |
0.8.0 | Jun 11, 2023 |
0.5.0 | Mar 25, 2023 |
#135 in Compression
953 downloads per month
Used in 2 crates
130KB
2.5K
SLoC
bzip3-rs
This is a Rust wrapper for bzip3.
Crate Features
- bundled: use bundled libbzip3
Current bundled bzip3 library version is kspalaiologos/bzip3@1.5.1.
TODO
Stream encoder/decoder multithreading support.
lib.rs
:
BZip3-rs
BZip3 compression for Rust.
BZip3 file structure:
[ magic number ([u8; 5]) | block size (i32) | block1 | block2 | blockN... ]
Structure of each block: [ new size (i32) | read size (i32) | data ]
Due to the naming from the original bzip3 library,
new size
indicates the data size after compression, and read size
indicates the original
data size.
Examples
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");
Dependencies
~1.4–4MB
~82K SLoC