oxiarc-deflate 0.3.1

Pure Rust DEFLATE compression algorithm (RFC 1951) for OxiArc
Documentation
//! # OxiArc Deflate
//!
//! Pure Rust implementation of the DEFLATE compression algorithm (RFC 1951).
//!
//! This crate provides compression and decompression of DEFLATE data, which
//! is the basis for ZIP, GZIP, and PNG formats.
//!
//! ## Features
//!
//! - **Decompression**: Full support for all DEFLATE block types
//!   - Stored (uncompressed) blocks
//!   - Fixed Huffman codes
//!   - Dynamic Huffman codes
//! - **Compression**: LZ77 + Huffman encoding
//!   - Multiple compression levels (0-9)
//!   - Fixed Huffman codes
//!
//! ## Example
//!
//! ```rust
//! use oxiarc_deflate::{deflate, inflate};
//!
//! // Compress data
//! let original = b"Hello, World! Hello, World!";
//! let compressed = deflate(original, 6).unwrap();
//!
//! // Decompress data
//! let decompressed = inflate(&compressed).unwrap();
//! assert_eq!(&decompressed, original);
//! ```
//!
//! ## Compression Levels
//!
//! - Level 0: No compression (stored blocks)
//! - Level 1-3: Fast compression
//! - Level 4-6: Balanced (default is 6)
//! - Level 7-9: Best compression (slower)

#![warn(missing_docs)]
#![warn(clippy::all)]
#![allow(clippy::module_name_repetitions)]

pub mod deflate;
pub mod gzip;
pub mod huffman;
pub mod inflate;
pub mod lz77;
pub mod optimal;
pub mod pool;
pub mod streaming;
pub mod tables;
pub mod zlib;

#[cfg(feature = "async-io")]
pub mod async_deflate;

#[cfg(feature = "async-io")]
pub mod raw_stream;

#[cfg(feature = "parallel")]
pub mod parallel;

#[cfg(feature = "async-io")]
pub use raw_stream::{RawDeflateWriter, RawInflateReader};

#[cfg(feature = "parallel")]
pub use parallel::{
    DEFAULT_PARALLEL_CHUNK_SIZE, ParallelGzipEncoder, compress_deflate_parallel,
    compress_gzip_parallel, gzip_compress_parallel,
};

// Re-exports
pub use deflate::{Deflater, MAX_DICTIONARY_SIZE, deflate};
pub use gzip::{GzipDecoder, GzipEncoder, gzip_compress, gzip_decompress};
pub use huffman::{HuffmanBuilder, HuffmanTree};
pub use inflate::{Inflater, inflate};
pub use lz77::{Lz77Encoder, Lz77Params, Lz77Preset, Lz77Token};
pub use optimal::OptimalParser;
pub use pool::{DeflatePool, PoolStats};
pub use streaming::{GzipStreamDecoder, GzipStreamEncoder, ZlibStreamDecoder, ZlibStreamEncoder};
pub use zlib::{
    Adler32, ZlibCompressor, ZlibDecompressor, zlib_compress, zlib_compress_with_dict,
    zlib_decompress, zlib_decompress_with_dict, zlib_requires_dictionary,
};