BitReader

Trait BitReader 

Source
pub trait BitReader<'de> {
    type Error: Error;

    // Required methods
    fn bits_left(&self) -> usize;
    fn read_bit(&mut self) -> Result<Option<bool>, Self::Error>;

    // Provided methods
    fn read_bits_into(
        &mut self,
        dst: &mut BitSlice<u8, Msb0>,
    ) -> Result<usize, Self::Error> { ... }
    fn read_bits(
        &mut self,
        n: usize,
    ) -> Result<Cow<'de, BitSlice<u8, Msb0>>, Self::Error> { ... }
    fn skip(&mut self, n: usize) -> Result<usize, Self::Error> { ... }
}
Expand description

Bitwise reader.

Required Associated Types§

Required Methods§

Source

fn bits_left(&self) -> usize

Returns count of bits left to read more

Source

fn read_bit(&mut self) -> Result<Option<bool>, Self::Error>

Reads only one bit.

Provided Methods§

Source

fn read_bits_into( &mut self, dst: &mut BitSlice<u8, Msb0>, ) -> Result<usize, Self::Error>

Reads dst.len() bits into given bitslice. Might be optimized by the implementation.

Source

fn read_bits( &mut self, n: usize, ) -> Result<Cow<'de, BitSlice<u8, Msb0>>, Self::Error>

Reads n bits and returns possibly borrowed BitSlice

Source

fn skip(&mut self, n: usize) -> Result<usize, Self::Error>

Reads and discards n bits

Implementations on Foreign Types§

Source§

impl<'de> BitReader<'de> for &'de BitSlice<u8, Msb0>

Source§

type Error = StringError

Source§

fn bits_left(&self) -> usize

Source§

fn read_bit(&mut self) -> Result<Option<bool>, Self::Error>

Source§

fn read_bits_into( &mut self, dst: &mut BitSlice<u8, Msb0>, ) -> Result<usize, Self::Error>

Source§

fn read_bits( &mut self, n: usize, ) -> Result<Cow<'de, BitSlice<u8, Msb0>>, Self::Error>

Source§

fn skip(&mut self, n: usize) -> Result<usize, Self::Error>

Source§

impl<'de> BitReader<'de> for &str

Binary string, e.g. "0010110...."

Source§

impl<'de> BitReader<'de> for &[bool]

Source§

type Error = StringError

Source§

fn bits_left(&self) -> usize

Source§

fn read_bit(&mut self) -> Result<Option<bool>, Self::Error>

Source§

fn skip(&mut self, n: usize) -> Result<usize, Self::Error>

Source§

impl<'de, R: BitReader<'de> + ?Sized> BitReader<'de> for &mut R

Source§

type Error = <R as BitReader<'de>>::Error

Source§

fn bits_left(&self) -> usize

Source§

fn read_bit(&mut self) -> Result<Option<bool>, Self::Error>

Source§

fn read_bits_into( &mut self, dst: &mut BitSlice<u8, Msb0>, ) -> Result<usize, Self::Error>

Source§

fn read_bits( &mut self, n: usize, ) -> Result<Cow<'de, BitSlice<u8, Msb0>>, Self::Error>

Source§

fn skip(&mut self, n: usize) -> Result<usize, Self::Error>

Source§

impl<'de, R: BitReader<'de> + ?Sized> BitReader<'de> for Box<R>

Source§

type Error = <R as BitReader<'de>>::Error

Source§

fn bits_left(&self) -> usize

Source§

fn read_bit(&mut self) -> Result<Option<bool>, Self::Error>

Source§

fn read_bits_into( &mut self, dst: &mut BitSlice<u8, Msb0>, ) -> Result<usize, Self::Error>

Source§

fn read_bits( &mut self, n: usize, ) -> Result<Cow<'de, BitSlice<u8, Msb0>>, Self::Error>

Source§

fn skip(&mut self, n: usize) -> Result<usize, Self::Error>

Implementors§

Source§

impl<'de> BitReader<'de> for Owned

Source§

type Error = <&'de BitSlice<u8, Msb0> as BitReader<'de>>::Error

Source§

impl<'de, R1, R2> BitReader<'de> for Join<R1, R2>
where R1: BitReader<'de>, R2: BitReader<'de>,

Source§

type Error = <R1 as BitReader<'de>>::Error

Source§

impl<'de, R> BitReader<'de> for BitCounter<R>
where R: BitReader<'de>,

Source§

type Error = <R as BitReader<'de>>::Error

Source§

impl<'de, R> BitReader<'de> for Checkpoint<R>
where R: BitReader<'de>,

Source§

type Error = <Tee<R, BitVec<u8, Msb0>> as BitReader<'de>>::Error

Source§

impl<'de, R> BitReader<'de> for Io<R>
where R: Read,

Source§

impl<'de, R, F, E> BitReader<'de> for MapErr<R, F>
where R: BitReader<'de>, F: FnMut(R::Error) -> E, E: Error,

Source§

type Error = E

Source§

impl<'de, R, W> BitReader<'de> for Tee<R, W>
where R: BitReader<'de>, W: BitWriter,

Source§

type Error = <R as BitReader<'de>>::Error