+//! Bitstream reader functionality.
+//!
+//! Bitstream reader operates on `&[u8]` and allows to read bits from the slice in different modes.
+//!
+//! # Examples
+//!
+//! Reading 17 bits from a bitstream:
+//! ```
+//! use nihav_core::io::bitreader::{BitReader,BitReaderMode};
+//!
+//! # use nihav_core::io::bitreader::BitReaderResult;
+//! # fn foo() -> BitReaderResult<u32> {
+//! let bits: [u8; 4] = [ 42, 43, 44, 45 ];
+//! let mut br = BitReader::new(&bits, BitReaderMode::BE);
+//! let value = br.read(17)?;
+//! # Ok(value)
+//! # }
+//! ```
+//!
+//! Reading some amount of bits and checking how many bits are left:
+//! ```
+//! use nihav_core::io::bitreader::{BitReader,BitReaderMode};
+//!
+//! # use nihav_core::io::bitreader::BitReaderResult;
+//! # fn foo() -> BitReaderResult<()> {
+//! let bits: [u8; 4] = [ 42, 43, 44, 45 ];
+//! let mut br = BitReader::new(&bits, BitReaderMode::BE);
+//! let num_skip_bits = br.read(3)?;
+//! br.skip(num_skip_bits)?;
+//! println!("Now there are {} bits left to read.", br.left());
+//! # Ok(())
+//! # }
+//! ```
+
+
+
+/// Bitstream reading modes.
+#[derive(Debug,Clone,Copy)]