Expand description
Pure Rust Snappy compression implementation.
This crate provides both the raw Snappy block format and the Snappy framed (streaming) format with CRC32C checksums.
§Block Format
The block format provides simple compress/decompress functions for in-memory data. This is the core Snappy algorithm.
use oxiarc_snappy::{compress, decompress};
let data = b"Hello, World! Hello, World!";
let compressed = compress(data);
let decompressed = decompress(&compressed).unwrap();
assert_eq!(decompressed, data);§Framed Format (Streaming)
The framed format provides streaming compression/decompression using
std::io::Write and std::io::Read traits. Data is split into
chunks of up to 64 KiB, each with a CRC32C checksum.
use oxiarc_snappy::{FrameEncoder, FrameDecoder};
use std::io::{Write, Read};
// Compress
let mut compressed = Vec::new();
{
let mut encoder = FrameEncoder::new(&mut compressed);
encoder.write_all(b"Hello, streaming Snappy!").unwrap();
encoder.finish().unwrap();
}
// Decompress
let mut decoder = FrameDecoder::new(&compressed[..]);
let mut output = Vec::new();
decoder.read_to_end(&mut output).unwrap();
assert_eq!(output, b"Hello, streaming Snappy!");Re-exports§
pub use compress::compress;pub use compress::compress_block_with_dict;pub use compress::max_compress_len;pub use decompress::decompress;pub use decompress::decompress_block_with_dict;pub use decompress::get_decompress_len as decompress_len;pub use error::SnappyError;pub use frame::FrameDecoder;pub use frame::FrameEncoder;pub use frame::compress_frame_pooled;pub use frame::compress_frame_with_dict;pub use frame::decompress_frame_with_dict;pub use pool::PoolStats;pub use pool::SnappyPool;
Modules§
- compress
- Snappy block compression.
- crc32c
- Pure Rust CRC32C (Castagnoli) implementation.
- decompress
- Snappy block decompression.
- error
- Error types for Snappy compression/decompression.
- frame
- Snappy framed format (streaming) encoder and decoder.
- pool
- Thread-safe memory pool for Snappy FrameEncoder/FrameDecoder scratch buffers.