gendx/lzma-rs

An LZMA decoder written in pure Rust

Rust

151

221 commits

updated Jul 17, 2024

See the code

README

lzma-rs

Crate Documentation Minimum Rust 1.71 Dependencies Safety Dance Build Status Codecov Lines of Code Downloads (crates.io)

This project is a decoder for LZMA and its variants written in pure Rust, with focus on clarity. It already supports LZMA, LZMA2 and a subset of the .xz file format.

Usage

Decompress a .xz file.

let filename = "foo.xz";
let mut f = std::io::BufReader::new(std::fs::File::open(filename).unwrap());
// "decomp" can be anything that implements "std::io::Write"
let mut decomp: Vec<u8> = Vec::new();
lzma_rs::xz_decompress(&mut f, &mut decomp).unwrap();
// Decompressed content is now in "decomp"

Encoder

For now, there is also a dumb encoder that only uses byte literals, with many hard-coded constants for code simplicity. Better encoders are welcome!

Contributing

Pull-requests are welcome, to improve the decoder, add better encoders, or more tests. Ultimately, this project should also implement .xz and .7z files.

License

MIT

codec
decoder
lzma

gendx/lzma-rs

An LZMA decoder written in pure Rust

Rust

151

221 commits

updated Jul 17, 2024

See the code

README

lzma-rs

Crate Documentation Minimum Rust 1.71 Dependencies Safety Dance Build Status Codecov Lines of Code Downloads (crates.io)

This project is a decoder for LZMA and its variants written in pure Rust, with focus on clarity. It already supports LZMA, LZMA2 and a subset of the .xz file format.

Usage

Decompress a .xz file.

let filename = "foo.xz";
let mut f = std::io::BufReader::new(std::fs::File::open(filename).unwrap());
// "decomp" can be anything that implements "std::io::Write"
let mut decomp: Vec<u8> = Vec::new();
lzma_rs::xz_decompress(&mut f, &mut decomp).unwrap();
// Decompressed content is now in "decomp"

Encoder

For now, there is also a dumb encoder that only uses byte literals, with many hard-coded constants for code simplicity. Better encoders are welcome!

Contributing

Pull-requests are welcome, to improve the decoder, add better encoders, or more tests. Ultimately, this project should also implement .xz and .7z files.

License

MIT

codec
decoder
lzma

Significant stargazers

Mads Marquart

213 followers · starred Feb 2021

Jiahao XU

158 followers · starred Mar 2024

kpcyrd

1,020 followers · starred Apr 2024

Rik Huijzer

115 followers · starred Apr 2025