compression/
lib.rs

1//! rust-compression
2//!
3//! # Overview
4//! Compression libraries implemented by pure Rust.
5//!
6//! # Licensing
7//! This Source Code is subject to the terms of the Mozilla Public License
8//! version 2.0 (the "License"). You can obtain a copy of the License at
9//! <http://mozilla.org/MPL/2.0/>.
10//!
11//! # Examples
12//!
13//! ```rust
14//! use compression::prelude::*;
15//!
16//! fn main() {
17//!     # #[cfg(feature = "bzip2")]
18//!     let compressed = b"aabbaabbaabbaabb\n"
19//!         .into_iter()
20//!         .cloned()
21//!         .encode(&mut BZip2Encoder::new(9), Action::Finish)
22//!         .collect::<Result<Vec<_>, _>>()
23//!         .unwrap();
24//!
25//!     # #[cfg(feature = "bzip2")]
26//!     let decompressed = compressed
27//!         .iter()
28//!         .cloned()
29//!         .decode(&mut BZip2Decoder::new())
30//!         .collect::<Result<Vec<_>, _>>()
31//!         .unwrap();
32//! }
33//! ```
34
35#![crate_type = "lib"]
36#![cfg_attr(not(feature = "std"), no_std)]
37
38#[cfg(feature = "std")]
39pub(crate) use std as core;
40
41#[cfg(not(feature = "std"))]
42pub(crate) use core;
43
44#[cfg(not(feature = "std"))]
45// #[macro_use(vec)]
46extern crate alloc;
47
48mod action;
49mod adler32;
50mod bitset;
51mod bucket_sort;
52mod cbuffer;
53mod crc32;
54mod error;
55
56mod bitio;
57mod suffix_array;
58
59mod huffman;
60mod lzss;
61mod traits;
62
63mod bzip2;
64mod deflate;
65mod lzhuf;
66
67mod gzip;
68mod zlib;
69
70pub mod prelude {
71    pub use crate::action::Action;
72    use cfg_if::cfg_if;
73
74    cfg_if! {
75        if #[cfg(feature = "bzip2")] {
76            pub use crate::bzip2::decoder::BZip2Decoder;
77            pub use crate::bzip2::encoder::BZip2Encoder;
78            pub use crate::bzip2::error::BZip2Error;
79        }
80    }
81
82    cfg_if! {
83        if #[cfg(feature = "deflate")] {
84            pub use crate::deflate::decoder::Deflater;
85            pub use crate::deflate::encoder::Inflater;
86        }
87    }
88    cfg_if! {
89        if #[cfg(feature = "gzip")] {
90            pub use crate::gzip::decoder::GZipDecoder;
91            pub use crate::gzip::encoder::GZipEncoder;
92        }
93    }
94    cfg_if! {
95        if #[cfg(feature = "lzhuf")] {
96            pub use crate::lzhuf::LzhufMethod;
97            pub use crate::lzhuf::decoder::LzhufDecoder;
98            pub use crate::lzhuf::encoder::LzhufEncoder;
99        }
100    }
101    cfg_if! {
102        if #[cfg(feature = "zlib")] {
103            pub use crate::zlib::decoder::ZlibDecoder;
104            pub use crate::zlib::encoder::ZlibEncoder;
105        }
106    }
107    cfg_if! {
108        if #[cfg(feature = "lzss")] {
109            pub use crate::lzss::decoder::LzssDecoder;
110            pub use crate::lzss::encoder::LzssEncoder;
111            pub use crate::lzss::LzssCode;
112        }
113    }
114    pub use crate::error::CompressionError;
115    pub use crate::traits::decoder::{DecodeExt, DecodeIterator, Decoder};
116    pub use crate::traits::encoder::{EncodeExt, EncodeIterator, Encoder};
117}