Expand description
Fast, pure-Rust zstd compression.
zrip implements zstd compression levels -7 through 4 (Fast and DFast strategies), targeting high-speed compression for data transfers. It produces standard zstd frames decompressible by any compliant decoder.
§Quick start
let data = b"hello world, hello zstd compression!";
// Compress at level 1 (fast)
let compressed = zrip::compress(data, 1).unwrap();
// Decompress
let decompressed = zrip::decompress(&compressed).unwrap();
assert_eq!(&decompressed, data);§Compression levels
| Level | Strategy | Notes |
|---|---|---|
| -7..=-1 | Fast | Fastest encode, lowest ratio |
| 1..=2 | Fast | Good balance for network transfers |
| 3..=4 | DFast | Better ratio, still fast |
§Streaming
FrameEncoder and FrameDecoder implement std::io::Write and
std::io::Read for streaming compression and decompression.
use std::io::{Write, Read};
let mut encoder = zrip::FrameEncoder::new(Vec::new(), 1).unwrap();
encoder.write_all(b"streaming data").unwrap();
let compressed = encoder.finish().unwrap();
let mut decoder = zrip::FrameDecoder::new(&compressed[..]);
let mut output = Vec::new();
decoder.read_to_end(&mut output).unwrap();
assert_eq!(&output, b"streaming data");§Buffer reuse
For repeated compression/decompression, CompressContext and
DecompressContext reuse internal buffers across calls, reducing allocation
overhead in hot loops.
§Feature flags
std(default): enablesallocand standard library support.alloc:no_stdwith heap allocation (Vec, etc.).frame(default): frame header parsing/writing; impliesstd.dict_builder: COVER/FastCOVER dictionary training.nightly:#[optimize]attributes for hot paths.
Re-exports§
pub use error::CompressError;pub use error::DecompressError;pub use error::ZstdError;pub use dict::Dictionary;pub use encode::strategy::LevelParams;pub use decode::context::DecompressContext;pub use decode::streaming::FrameDecoder;pub use encode::context::CompressContext;pub use encode::streaming::FrameEncoder;
Modules§
Constants§
- DEFAULT_
DECOMPRESS_ LIMIT - Default safety limit for decompressed output.
Functions§
- compress
- Compresses
inputinto a zstd frame at the given level (-7..=4). - compress_
bound - Returns the maximum compressed size for a given input length.
- compress_
into - Compresses
inputinto a caller-provided buffer, returning bytes written. - compress_
with_ dict - Compresses
inputat the given level using a pre-trained dictionary. - compress_
with_ params - Compresses
inputusing explicitLevelParams. - decompress
- Decompresses a zstd-compressed frame (or concatenated frames).
- decompress_
into - Decompresses into an existing
Vec, appending the output. Returns bytes written. - decompress_
with_ dict - Decompresses a zstd frame compressed with a dictionary.