Crate lz4jb

Source
Expand description

A Rust implementation of the LZ4BlockOutputStream format from lz4-java.

Beware: this format is not compatible with the standard LZ4 Block format. You should not use it if you unless you have to work with some historical data compressed using the Java code.

§Example

use lz4jb::{Lz4BlockInput, Lz4BlockOutput};
use std::io::{Read, Result, Write};

fn compress(d: &str) -> Result<Vec<u8>> {
    let mut compressed = Vec::new();
    Lz4BlockOutput::new(&mut compressed, 64)?.write_all(d.as_bytes())?;
    Ok(compressed)
}
fn decompress(r: &mut dyn Read) -> Result<String> {
    let mut decompressed = String::new();
    Lz4BlockInput::new(r).read_to_string(&mut decompressed)?;
    Ok(decompressed)
}

fn main() -> Result<()> {
    // compress the string
    let compressed = compress("Hello World!")?;

    // decompress back into the original value
    let decompressed = decompress(&mut compressed.as_slice())?;
    println!("{}", decompressed);
    Ok(())
}

Structs§

Lz4BlockInput
Wrapper around a Read object to decompress data.
Lz4BlockOutput
Wrapper around a Write object to compress data.