1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//! An RLE-based encoder and decoder for bit streams.
//!
//! # Example
//!
//! ```
//! use std::iter;
//!
//! // Create input bit stream from a variety of different generators
//! // With standard bit packing, this takes 17 bytes
//! let tmp = &[true, false];
//! let input = iter::repeat(true).take(50)
//!     .chain(iter::repeat(false).take(51))
//!     .chain(tmp.iter().copied().cycle().take(33));
//!
//! let output : Vec<_> = bitterlemon::encode(input).collect();
//! // Bitterlemon gets this down to 8 bytes
//! assert_eq!(b"\xf2\xb3\x21\xaa\xaa\xaa\xaa\x80", output.as_slice());
//!
//! let decoded : Result<Vec<_>, _> = bitterlemon::decode(output.into_iter()).collect();
//! assert!(decoded.is_ok());
//! let decoded = decoded.unwrap();
//! assert_eq!(134, decoded.len());
//! ```

mod encode;
mod decode;

pub use encode::{encode,Encoder};
pub use decode::{decode,Decoder,Result,Error};