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 30 31 32 33
//! 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().cloned().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.iter().map(|&b| b)).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}; #[cfg(test)] mod test_encode_round_trip;