#lzma #codec #xz #ported #java #tukaani

lzma-rust

从'tukaani xz for java'移植的LZMA/LZMA2编解码器

8个版本

0.1.7 2024年7月17日
0.1.6 2024年4月5日
0.1.5 2023年9月29日
0.1.4 2023年6月16日
0.1.0 2023年1月31日

#181压缩

Download history 2683/week @ 2024-05-04 3005/week @ 2024-05-11 2872/week @ 2024-05-18 2930/week @ 2024-05-25 2751/week @ 2024-06-01 2242/week @ 2024-06-08 2257/week @ 2024-06-15 2570/week @ 2024-06-22 2508/week @ 2024-06-29 2446/week @ 2024-07-06 3643/week @ 2024-07-13 3049/week @ 2024-07-20 2842/week @ 2024-07-27 2732/week @ 2024-08-03 2955/week @ 2024-08-10 2580/week @ 2024-08-17

11,525 每月下载量
用于 20 个crate(2 个直接使用)

Apache-2.0

160KB
4.5K SLoC

tukaani xz for java移植的LZMA/LZMA2编解码器

用法

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[..]);

依赖项

~115KB