Skip to main content

Crate oxiarc_snappy

Crate oxiarc_snappy 

Source
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.