13 releases (7 breaking)

0.12.0 Dec 30, 2025
0.11.0 Dec 18, 2024
0.9.0 Dec 8, 2023
0.8.3 Oct 20, 2023
0.5.0 Mar 25, 2023

#248 in Compression

Download history 688/week @ 2025-09-25 276/week @ 2025-10-02 365/week @ 2025-10-09 119/week @ 2025-10-16 393/week @ 2025-10-23 393/week @ 2025-10-30 464/week @ 2025-11-06 461/week @ 2025-11-13 90/week @ 2025-11-20 188/week @ 2025-11-27 80/week @ 2025-12-04 419/week @ 2025-12-11 80/week @ 2025-12-18 40/week @ 2025-12-25 278/week @ 2026-01-01 36/week @ 2026-01-08

444 downloads per month
Used in 3 crates

LGPL-3.0-only

140KB
2.5K SLoC

C 1.5K SLoC // 0.1% comments Rust 835 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 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");

bzip3-rs

This is a Rust wrapper for bzip3.

Documentation

Crate Features

Dependencies

~2.2–5MB
~96K SLoC