Skip to main content

Crate zenflate

Crate zenflate 

Source
Expand description

zenflate: Pure Rust DEFLATE/zlib/gzip compression and decompression.

A port of libdeflate to safe Rust.

All three DEFLATE-based formats (raw DEFLATE, zlib, gzip) are supported for both compression and decompression.

§Quick start

use zenflate::{Compressor, CompressionLevel, Decompressor, Unstoppable};

let data = b"Hello, World! Hello, World! Hello, World!";

// Compress (effort 15 = lazy matching, a good default)
let mut compressor = Compressor::new(CompressionLevel::balanced());
let bound = Compressor::deflate_compress_bound(data.len());
let mut compressed = vec![0u8; bound];
let csize = compressor.deflate_compress(data, &mut compressed, Unstoppable).unwrap();

// Decompress
let mut decompressor = Decompressor::new();
let mut output = vec![0u8; data.len()];
let result = decompressor
    .deflate_decompress(&compressed[..csize], &mut output, Unstoppable)
    .unwrap();
assert_eq!(&output[..result.output_written], &data[..]);

§Compression levels

Use named presets or dial in a specific effort from 0 to 30:

PresetEffortStrategy
CompressionLevel::none()0Store (no compression)
CompressionLevel::fastest()1Turbo hash table
CompressionLevel::fast()10Greedy hash chains
CompressionLevel::balanced()15Lazy matching (default)
CompressionLevel::high()22Double-lazy matching
CompressionLevel::best()30Near-optimal parsing

CompressionLevel::new(n) accepts any effort 0-30 for fine-grained control between presets. Higher effort within a strategy increases search depth and match quality.

CompressionLevel::libdeflate(n) (0-12) produces byte-identical output with C libdeflate.

Re-exports§

pub use checksum::Adler32Hasher;
pub use checksum::Crc32Hasher;
pub use checksum::adler32;
pub use checksum::adler32_combine;
pub use checksum::crc32;
pub use checksum::crc32_combine;
pub use compress::CompressionLevel;
pub use compress::Compressor;
pub use decompress::streaming::BufReadSource;
pub use decompress::streaming::DEFAULT_CAPACITY;
pub use decompress::streaming::InputSource;
pub use decompress::streaming::StreamDecompressor;
pub use decompress::DecompressOutcome;
pub use decompress::Decompressor;
pub use error::StreamError;
pub use error::CompressionError;
pub use error::DecompressionError;

Modules§

checksum
Checksum algorithms: Adler-32 (zlib) and CRC-32 (gzip).
compress
DEFLATE/zlib/gzip compression.
decompress
DEFLATE decompression, ported from libdeflate’s deflate_decompress.c and decompress_template.h.
error
Error types for compression and decompression.

Structs§

Unstoppable
A Stop implementation that never stops (no cooperative cancellation).

Enums§

StopReason
Why an operation was stopped.

Traits§

Stop
Cooperative cancellation check.