Expand description
Pure Rust, high performance implementation of LZ4 compression.
A detailed explanation of the algorithm can be found here.
§Overview
This crate provides two ways to use lz4. The first way is through the
frame::FrameDecoder
and
frame::FrameEncoder
types, which implement the std::io::Read and std::io::Write traits with the
lz4 frame format. Unless you have a specific reason to the contrary, you
should only use the lz4 frame format. Specifically, the lz4 frame format
permits streaming compression or decompression.
The second way is through the
decompress_size_prepended
and
compress_prepend_size
functions. These functions provide access to the lz4 block format, and
don’t support a streaming interface directly. You should only use these types
if you know you specifically need the lz4 block format.
§Example: compress data on stdin with frame format
This program reads data from stdin, compresses it and emits it to stdout.
This example can be found in examples/compress.rs:
use std::io;
let stdin = io::stdin();
let stdout = io::stdout();
let mut rdr = stdin.lock();
// Wrap the stdout writer in a LZ4 Frame writer.
let mut wtr = lz4_flex::frame::FrameEncoder::new(stdout.lock());
io::copy(&mut rdr, &mut wtr).expect("I/O operation failed");
wtr.finish().unwrap();§Example: decompress data on stdin with frame format
This program reads data from stdin, decompresses it and emits it to stdout.
This example can be found in examples/decompress.rs:
use std::io;
let stdin = io::stdin();
let stdout = io::stdout();
// Wrap the stdin reader in a LZ4 FrameDecoder.
let mut rdr = lz4_flex::frame::FrameDecoder::new(stdin.lock());
let mut wtr = stdout.lock();
io::copy(&mut rdr, &mut wtr).expect("I/O operation failed");§Example: block format roundtrip
use lz4_flex::block::{compress_prepend_size, decompress_size_prepended};
let input: &[u8] = b"Hello people, what's up?";
let compressed = compress_prepend_size(input);
let uncompressed = decompress_size_prepended(&compressed).unwrap();
assert_eq!(input, uncompressed);§Feature Flags
safe-encodeuses only safe rust for encode. enabled by defaultsafe-decodeuses only safe rust for encode. enabled by defaultframesupport for LZ4 frame format. impliesstd, enabled by defaultstdenables dependency on the standard library. enabled by default
For maximum performance use no-default-features.
For no_std support only the block format is supported.
Re-exports§
pub use block::compress;pub use block::compress;pub use block::compress_into;pub use block::compress_prepend_size;pub use block::decompress;pub use block::decompress;pub use block::decompress_into;pub use block::decompress_size_prepended;