Struct dsi_bitstream::impls::BitReader
source · pub struct BitReader<E: Endianness, WR, RP: ReadParams = DefaultReadParams> { /* private fields */ }Expand description
An implementation of BitRead for a WordRead with word u64 and of
BitSeek for a WordSeek.
This implementation accesses randomly the underlying WordRead without
any buffering. It is usually slower than
BufBitReader.
The peek word is u32. The value returned by
peek_bits contains at least 32 bits
(extended with zeros beyond end of stream), that is, a full peek word.
The additional type parameter RP is used to select the parameters for the
instantanous codes, but the casual user should be happy with the default
value. See ReadParams for more details.
Implementations§
source§impl<E: Endianness, WR, RP: ReadParams> BitReader<E, WR, RP>
impl<E: Endianness, WR, RP: ReadParams> BitReader<E, WR, RP>
Trait Implementations§
source§impl<E: Error + Send + Sync + 'static, WR: WordRead<Error = E, Word = u64> + WordSeek<Error = E>, RP: ReadParams> BitRead<BigEndian> for BitReader<BE, WR, RP>
impl<E: Error + Send + Sync + 'static, WR: WordRead<Error = E, Word = u64> + WordSeek<Error = E>, RP: ReadParams> BitRead<BigEndian> for BitReader<BE, WR, RP>
type Error = <WR as WordRead>::Error
source§fn skip_bits(&mut self, n_bits: usize) -> Result<(), Self::Error>
fn skip_bits(&mut self, n_bits: usize) -> Result<(), Self::Error>
Skip
n bits from the stream. Read moresource§fn read_bits(&mut self, n_bits: usize) -> Result<u64, Self::Error>
fn read_bits(&mut self, n_bits: usize) -> Result<u64, Self::Error>
Read
n bits and return them in the lowest bits. Read moresource§fn peek_bits(&mut self, n_bits: usize) -> Result<u32, Self::Error>
fn peek_bits(&mut self, n_bits: usize) -> Result<u32, Self::Error>
Peeks at
n bits without advancing the stream position.
n must be nonzero, and at most PeekWord::BITS.fn copy_to<F: Endianness, W: BitWrite<F>>( &mut self, bit_write: &mut W, n: u64 ) -> Result<(), CopyError<Self::Error, W::Error>>
source§impl<E: Error + Send + Sync + 'static, WR: WordRead<Error = E, Word = u64> + WordSeek<Error = E>, RP: ReadParams> BitRead<LittleEndian> for BitReader<LE, WR, RP>
impl<E: Error + Send + Sync + 'static, WR: WordRead<Error = E, Word = u64> + WordSeek<Error = E>, RP: ReadParams> BitRead<LittleEndian> for BitReader<LE, WR, RP>
type Error = <WR as WordRead>::Error
source§fn skip_bits(&mut self, n_bits: usize) -> Result<(), Self::Error>
fn skip_bits(&mut self, n_bits: usize) -> Result<(), Self::Error>
Skip
n bits from the stream. Read moresource§fn read_bits(&mut self, n_bits: usize) -> Result<u64, Self::Error>
fn read_bits(&mut self, n_bits: usize) -> Result<u64, Self::Error>
Read
n bits and return them in the lowest bits. Read moresource§fn peek_bits(&mut self, n_bits: usize) -> Result<u32, Self::Error>
fn peek_bits(&mut self, n_bits: usize) -> Result<u32, Self::Error>
Peeks at
n bits without advancing the stream position.
n must be nonzero, and at most PeekWord::BITS.fn copy_to<F: Endianness, W: BitWrite<F>>( &mut self, bit_write: &mut W, n: u64 ) -> Result<(), CopyError<Self::Error, W::Error>>
source§impl<WR: WordSeek, RP: ReadParams> BitSeek for BitReader<BE, WR, RP>
impl<WR: WordSeek, RP: ReadParams> BitSeek for BitReader<BE, WR, RP>
source§impl<WR: WordSeek, RP: ReadParams> BitSeek for BitReader<LE, WR, RP>
impl<WR: WordSeek, RP: ReadParams> BitSeek for BitReader<LE, WR, RP>
source§impl<E: Clone + Endianness, WR: Clone, RP: Clone + ReadParams> Clone for BitReader<E, WR, RP>
impl<E: Clone + Endianness, WR: Clone, RP: Clone + ReadParams> Clone for BitReader<E, WR, RP>
source§impl<E: Debug + Endianness, WR: Debug, RP: Debug + ReadParams> Debug for BitReader<E, WR, RP>
impl<E: Debug + Endianness, WR: Debug, RP: Debug + ReadParams> Debug for BitReader<E, WR, RP>
source§impl<E: Error + Send + Sync + 'static, WR: WordRead<Error = E, Word = u64> + WordSeek<Error = E>> DeltaRead<BigEndian> for BitReader<BigEndian, WR, DefaultReadParams>where
WR::Word: DoubleType + UpcastableInto<u64>,
<WR::Word as DoubleType>::DoubleType: CastableInto<u64>,
impl<E: Error + Send + Sync + 'static, WR: WordRead<Error = E, Word = u64> + WordSeek<Error = E>> DeltaRead<BigEndian> for BitReader<BigEndian, WR, DefaultReadParams>where
WR::Word: DoubleType + UpcastableInto<u64>,
<WR::Word as DoubleType>::DoubleType: CastableInto<u64>,
source§impl<E: Error + Send + Sync + 'static, WR: WordRead<Error = E, Word = u64> + WordSeek<Error = E>> DeltaRead<LittleEndian> for BitReader<LittleEndian, WR, DefaultReadParams>where
WR::Word: DoubleType + UpcastableInto<u64>,
<WR::Word as DoubleType>::DoubleType: CastableInto<u64>,
impl<E: Error + Send + Sync + 'static, WR: WordRead<Error = E, Word = u64> + WordSeek<Error = E>> DeltaRead<LittleEndian> for BitReader<LittleEndian, WR, DefaultReadParams>where
WR::Word: DoubleType + UpcastableInto<u64>,
<WR::Word as DoubleType>::DoubleType: CastableInto<u64>,
source§impl<E: Error + Send + Sync + 'static, WR: WordRead<Error = E, Word = u64> + WordSeek<Error = E>> GammaRead<BigEndian> for BitReader<BigEndian, WR, DefaultReadParams>where
WR::Word: DoubleType + UpcastableInto<u64>,
<WR::Word as DoubleType>::DoubleType: CastableInto<u64>,
impl<E: Error + Send + Sync + 'static, WR: WordRead<Error = E, Word = u64> + WordSeek<Error = E>> GammaRead<BigEndian> for BitReader<BigEndian, WR, DefaultReadParams>where
WR::Word: DoubleType + UpcastableInto<u64>,
<WR::Word as DoubleType>::DoubleType: CastableInto<u64>,
source§impl<E: Error + Send + Sync + 'static, WR: WordRead<Error = E, Word = u64> + WordSeek<Error = E>> GammaRead<LittleEndian> for BitReader<LittleEndian, WR, DefaultReadParams>where
WR::Word: DoubleType + UpcastableInto<u64>,
<WR::Word as DoubleType>::DoubleType: CastableInto<u64>,
impl<E: Error + Send + Sync + 'static, WR: WordRead<Error = E, Word = u64> + WordSeek<Error = E>> GammaRead<LittleEndian> for BitReader<LittleEndian, WR, DefaultReadParams>where
WR::Word: DoubleType + UpcastableInto<u64>,
<WR::Word as DoubleType>::DoubleType: CastableInto<u64>,
source§impl<E: Error + Send + Sync + 'static, WR: WordRead<Error = E, Word = u64> + WordSeek<Error = E>> ZetaRead<BigEndian> for BitReader<BigEndian, WR, DefaultReadParams>where
WR::Word: DoubleType + UpcastableInto<u64>,
<WR::Word as DoubleType>::DoubleType: CastableInto<u64>,
impl<E: Error + Send + Sync + 'static, WR: WordRead<Error = E, Word = u64> + WordSeek<Error = E>> ZetaRead<BigEndian> for BitReader<BigEndian, WR, DefaultReadParams>where
WR::Word: DoubleType + UpcastableInto<u64>,
<WR::Word as DoubleType>::DoubleType: CastableInto<u64>,
source§impl<E: Error + Send + Sync + 'static, WR: WordRead<Error = E, Word = u64> + WordSeek<Error = E>> ZetaRead<LittleEndian> for BitReader<LittleEndian, WR, DefaultReadParams>where
WR::Word: DoubleType + UpcastableInto<u64>,
<WR::Word as DoubleType>::DoubleType: CastableInto<u64>,
impl<E: Error + Send + Sync + 'static, WR: WordRead<Error = E, Word = u64> + WordSeek<Error = E>> ZetaRead<LittleEndian> for BitReader<LittleEndian, WR, DefaultReadParams>where
WR::Word: DoubleType + UpcastableInto<u64>,
<WR::Word as DoubleType>::DoubleType: CastableInto<u64>,
Auto Trait Implementations§
impl<E, WR, RP> RefUnwindSafe for BitReader<E, WR, RP>
impl<E, WR, RP> Send for BitReader<E, WR, RP>
impl<E, WR, RP> Sync for BitReader<E, WR, RP>
impl<E, WR, RP> Unpin for BitReader<E, WR, RP>
impl<E, WR, RP> UnwindSafe for BitReader<E, WR, RP>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
impl<T, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
source§impl<B> DeltaReadParam<BigEndian> for Bwhere
B: GammaReadParam<BigEndian>,
impl<B> DeltaReadParam<BigEndian> for Bwhere
B: GammaReadParam<BigEndian>,
source§impl<B> DeltaReadParam<LittleEndian> for Bwhere
B: GammaReadParam<LittleEndian>,
impl<B> DeltaReadParam<LittleEndian> for Bwhere
B: GammaReadParam<LittleEndian>,
fn read_delta_param<const USE_DELTA_TABLE: bool, const USE_GAMMA_TABLE: bool>( &mut self ) -> Result<u64, <B as BitRead<LittleEndian>>::Error>
source§impl<T> DowncastableFrom<T> for T
impl<T> DowncastableFrom<T> for T
source§fn downcast_from(value: T) -> T
fn downcast_from(value: T) -> T
Truncate the current UnsignedInt to a possibly smaller size
source§impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
source§impl<E, B> ExpGolombRead<E> for B
impl<E, B> ExpGolombRead<E> for B
source§impl<B> GammaReadParam<BigEndian> for B
impl<B> GammaReadParam<BigEndian> for B
source§impl<B> GammaReadParam<LittleEndian> for Bwhere
B: BitRead<LittleEndian>,
impl<B> GammaReadParam<LittleEndian> for Bwhere
B: BitRead<LittleEndian>,
fn read_gamma_param<const USE_TABLE: bool>( &mut self ) -> Result<u64, <B as BitRead<LittleEndian>>::Error>
source§impl<E, B> GolombRead<E> for Bwhere
E: Endianness,
B: BitRead<E>,
impl<E, B> GolombRead<E> for Bwhere
E: Endianness,
B: BitRead<E>,
source§impl<E, B> MinimalBinaryRead<E> for Bwhere
E: Endianness,
B: BitRead<E>,
impl<E, B> MinimalBinaryRead<E> for Bwhere
E: Endianness,
B: BitRead<E>,
source§impl<E, B> RiceRead<E> for Bwhere
E: Endianness,
B: BitRead<E>,
impl<E, B> RiceRead<E> for Bwhere
E: Endianness,
B: BitRead<E>,
source§impl<T> UpcastableFrom<T> for T
impl<T> UpcastableFrom<T> for T
source§fn upcast_from(value: T) -> T
fn upcast_from(value: T) -> T
Extend the current UnsignedInt to a possibly bigger size.