#lzma #xz #codec #java #ported #lzma2

lzma-rust

LZMA/LZMA2 codec ported from 'tukaani xz for java'

8 releases

0.1.7 Jul 17, 2024
0.1.6 Apr 5, 2024
0.1.5 Sep 29, 2023
0.1.4 Jun 16, 2023
0.1.0 Jan 31, 2023

#190 in Compression

Download history 3156/week @ 2024-10-11 3009/week @ 2024-10-18 3198/week @ 2024-10-25 2870/week @ 2024-11-01 2685/week @ 2024-11-08 4256/week @ 2024-11-15 3188/week @ 2024-11-22 3239/week @ 2024-11-29 2975/week @ 2024-12-06 3208/week @ 2024-12-13 2733/week @ 2024-12-20 3017/week @ 2024-12-27 2820/week @ 2025-01-03 3185/week @ 2025-01-10 2379/week @ 2025-01-17 1917/week @ 2025-01-24

10,665 downloads per month
Used in 31 crates (2 directly)

Apache-2.0

160KB
4.5K SLoC

LZMA/LZMA2 codec ported from tukaani xz for java

Usage

lzma

    use std::io::{Read, Write};
    use lzma_rust::*;

    let s = b"Hello, world!";
    let mut out = Vec::new();
    let mut options = LZMA2Options::with_preset(6);
    options.dict_size = LZMA2Options::DICT_SIZE_DEFAULT;

    let mut w = LZMAWriter::new_use_header(CountingWriter::new(&mut out), &options, None).unwrap();
    w.write_all(s).unwrap();
    w.write(&[]).unwrap();
    let mut r = LZMAReader::new_mem_limit(&out[..], u32::MAX, None).unwrap();
    let mut s2 = vec![0; s.len()];
    r.read_exact(&mut s2).unwrap();
    println!("{:?}", &out[..]);
    assert_eq!(s, &s2[..]);

lzma2

    use std::io::{Read, Write};
    use lzma_rust::*;

    let s = b"Hello, world!";
    let mut out = Vec::new();
    let mut options = LZMA2Options::with_preset(6);
    options.dict_size = LZMA2Options::DICT_SIZE_DEFAULT;
    {
        let mut w = LZMA2Writer::new(CountingWriter::new(&mut out), &options);
        w.write_all(s).unwrap();
        w.write(&[]).unwrap();
    }
    let mut r = LZMA2Reader::new(&out[..], options.dict_size, None);
    let mut s2 = vec![0; s.len()];
    r.read_exact(&mut s2).unwrap();
    println!("{:?}", &out[..]);
    assert_eq!(s, &s2[..]);

Dependencies

~115KB