Crate lzo1x

source ·
Expand description

Safe Rust port of the LZO1X compression algorithm.

§Examples

Compression and decompression:

let data = &[0xaa; 100];
let compressed = lzo1x::compress(data, lzo1x::CompressLevel::default());

assert_eq!(compressed.len(), 34);

let mut decompressed = vec![0; data.len()];
lzo1x::decompress(&compressed, &mut decompressed).unwrap();

assert_eq!(decompressed, data);

Slow but optimized pre-compression:

let data = &[0xaa; 100];
let mut compressed = lzo1x::compress(data, lzo1x::CompressLevel::new(13).unwrap());

lzo1x::optimize(&mut compressed, data.len());

assert_eq!(compressed.len(), 9);

§Comparison with original implementation

All functionality has been completely cross-tested against the original C implementation using lzo-sys. Futhermore, all compression functions have been unified on a single level scale according to the table below:

levelC equivalentC level
1lzo1x_1_11_compress
2lzo1x_1_12_compress
3lzo1x_1_compress
4lzo1x_1_15_compress
5lzo1x_999_compress1
6lzo1x_999_compress2
7lzo1x_999_compress3
8lzo1x_999_compress4
9lzo1x_999_compress5
10lzo1x_999_compress6
11lzo1x_999_compress7
12lzo1x_999_compress8
13lzo1x_999_compress9

Structs§

Functions§

  • Compress the given src with the given compression level.
  • Decompress the given src into the given dst.
  • Optimize compressed data given in src in terms of decompression speed.