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 randomly accesses 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
instantaneous codes, but the casual user should be happy with the default
value. See ReadParams for more details.
For additional flexibility, when the std feature is enabled, this
structure implements std::io::Read. Note that because of coherence
rules it is not possible to implement std::io::Read for a generic
BitRead.
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<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>, RP: ReadParams> BitRead<BigEndian> for BitReader<BE, WR, RP>
impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>, RP: ReadParams> BitRead<BigEndian> for BitReader<BE, WR, RP>
Source§const PEEK_BITS: usize = 32
const PEEK_BITS: usize = 32
peek_bits is guaranteed
to return successfully (with zero-extended EOF).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>
n bits from the stream. Read moreSource§fn read_bits(&mut self, num_bits: usize) -> Result<u64, Self::Error>
fn read_bits(&mut self, num_bits: usize) -> Result<u64, Self::Error>
num_bits bits and returns them in the lowest bits. Read moreSource§impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>, RP: ReadParams> BitRead<LittleEndian> for BitReader<LE, WR, RP>
impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>, RP: ReadParams> BitRead<LittleEndian> for BitReader<LE, WR, RP>
Source§const PEEK_BITS: usize = 32
const PEEK_BITS: usize = 32
peek_bits is guaranteed
to return successfully (with zero-extended EOF).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>
n bits from the stream. Read moreSource§fn read_bits(&mut self, num_bits: usize) -> Result<u64, Self::Error>
fn read_bits(&mut self, num_bits: usize) -> Result<u64, Self::Error>
num_bits bits and returns them in the lowest bits. Read moreSource§impl<E: Endianness, WR: WordSeek, RP: ReadParams> BitSeek for BitReader<E, WR, RP>
impl<E: Endianness, WR: WordSeek, RP: ReadParams> BitSeek for BitReader<E, 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<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>> DeltaRead<BigEndian> for BitReader<BigEndian, WR, DefaultReadParams>
impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>> DeltaRead<BigEndian> for BitReader<BigEndian, WR, DefaultReadParams>
Source§impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>> DeltaRead<LittleEndian> for BitReader<LittleEndian, WR, DefaultReadParams>
impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>> DeltaRead<LittleEndian> for BitReader<LittleEndian, WR, DefaultReadParams>
Source§impl<E: Endianness, WR, RP: ReadParams> FlatType for BitReader<E, WR, RP>
impl<E: Endianness, WR, RP: ReadParams> FlatType for BitReader<E, WR, RP>
Source§impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>> GammaRead<BigEndian> for BitReader<BigEndian, WR, DefaultReadParams>
impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>> GammaRead<BigEndian> for BitReader<BigEndian, WR, DefaultReadParams>
Source§impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>> GammaRead<LittleEndian> for BitReader<LittleEndian, WR, DefaultReadParams>
impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>> GammaRead<LittleEndian> for BitReader<LittleEndian, WR, DefaultReadParams>
Source§impl<E: Endianness, WR, RP: ReadParams> MemDbgImpl for BitReader<E, WR, RP>where
WR: MemDbgImpl + FlatType,
u64: MemDbgImpl + FlatType,
PhantomData<(E, RP)>: MemDbgImpl + FlatType,
impl<E: Endianness, WR, RP: ReadParams> MemDbgImpl for BitReader<E, WR, RP>where
WR: MemDbgImpl + FlatType,
u64: MemDbgImpl + FlatType,
PhantomData<(E, RP)>: MemDbgImpl + FlatType,
fn _mem_dbg_rec_on( &self, _memdbg_writer: &mut impl Write, _memdbg_total_size: usize, _memdbg_max_depth: usize, _memdbg_prefix: &mut String, _memdbg_is_last: bool, _memdbg_flags: DbgFlags, _memdbg_refs: &mut HashSet<usize>, ) -> Result
fn _mem_dbg_depth_on( &self, writer: &mut impl Write, total_size: usize, max_depth: usize, prefix: &mut String, field_name: Option<&str>, is_last: bool, padded_size: usize, flags: DbgFlags, dbg_refs: &mut HashSet<usize>, ) -> Result<(), Error>
Source§fn _mem_dbg_depth_on_impl(
&self,
writer: &mut impl Write,
total_size: usize,
max_depth: usize,
prefix: &mut String,
field_name: Option<&str>,
is_last: bool,
padded_size: usize,
flags: DbgFlags,
dbg_refs: &mut HashSet<usize>,
ref_display: RefDisplay,
) -> Result<(), Error>
fn _mem_dbg_depth_on_impl( &self, writer: &mut impl Write, total_size: usize, max_depth: usize, prefix: &mut String, field_name: Option<&str>, is_last: bool, padded_size: usize, flags: DbgFlags, dbg_refs: &mut HashSet<usize>, ref_display: RefDisplay, ) -> Result<(), Error>
Source§impl<E: Endianness, WR, RP: ReadParams> MemSize for BitReader<E, WR, RP>
impl<E: Endianness, WR, RP: ReadParams> MemSize for BitReader<E, WR, RP>
Source§impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>> OmegaRead<BigEndian> for BitReader<BigEndian, WR, DefaultReadParams>
impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>> OmegaRead<BigEndian> for BitReader<BigEndian, WR, DefaultReadParams>
Source§impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>> OmegaRead<LittleEndian> for BitReader<LittleEndian, WR, DefaultReadParams>
impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>> OmegaRead<LittleEndian> for BitReader<LittleEndian, WR, DefaultReadParams>
Source§impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>> PiRead<BigEndian> for BitReader<BigEndian, WR, DefaultReadParams>
impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>> PiRead<BigEndian> for BitReader<BigEndian, WR, DefaultReadParams>
Source§impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>> PiRead<LittleEndian> for BitReader<LittleEndian, WR, DefaultReadParams>
impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>> PiRead<LittleEndian> for BitReader<LittleEndian, WR, DefaultReadParams>
Source§impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>, RP: ReadParams> Read for BitReader<BE, WR, RP>
Available on crate feature std only.
impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>, RP: ReadParams> Read for BitReader<BE, WR, RP>
std only.Source§fn read(&mut self, buf: &mut [u8]) -> Result<usize>
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
1.36.0 · Source§fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
read, except that it reads into a slice of buffers. Read moreSource§fn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
can_vector)1.0.0 · Source§fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
buf. Read more1.0.0 · Source§fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
buf. Read more1.6.0 · Source§fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
buf. Read moreSource§fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
read_buf)Source§fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
read_buf)cursor. Read more1.0.0 · Source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Read. Read more1.0.0 · Source§fn chain<R>(self, next: R) -> Chain<Self, R>
fn chain<R>(self, next: R) -> Chain<Self, R>
Source§impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>, RP: ReadParams> Read for BitReader<LE, WR, RP>
Available on crate feature std only.
impl<WR: WordRead<Word = u64> + WordSeek<Error = <WR as WordRead>::Error>, RP: ReadParams> Read for BitReader<LE, WR, RP>
std only.Source§fn read(&mut self, buf: &mut [u8]) -> Result<usize>
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
1.36.0 · Source§fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
read, except that it reads into a slice of buffers. Read moreSource§fn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
can_vector)1.0.0 · Source§fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
buf. Read more1.0.0 · Source§fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
buf. Read more1.6.0 · Source§fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
buf. Read moreSource§fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
read_buf)Source§fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
read_buf)cursor. Read more1.0.0 · Source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Read. Read more1.0.0 · Source§fn chain<R>(self, next: R) -> Chain<Self, R>
fn chain<R>(self, next: R) -> Chain<Self, R>
Auto Trait Implementations§
impl<E, WR, RP> Freeze for BitReader<E, WR, RP>where
WR: Freeze,
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> UnsafeUnpin for BitReader<E, WR, RP>where
WR: UnsafeUnpin,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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<E, B> ExpGolombRead<E> for Bwhere
E: Endianness,
B: GammaRead<E>,
impl<E, B> ExpGolombRead<E> for Bwhere
E: Endianness,
B: GammaRead<E>,
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<T> MemDbg for Twhere
T: MemDbgImpl,
impl<T> MemDbg for Twhere
T: MemDbgImpl,
Source§fn mem_dbg(&self, flags: DbgFlags) -> Result<(), Error>
fn mem_dbg(&self, flags: DbgFlags) -> Result<(), Error>
Source§fn mem_dbg_on(
&self,
writer: &mut impl Write,
flags: DbgFlags,
) -> Result<(), Error>
fn mem_dbg_on( &self, writer: &mut impl Write, flags: DbgFlags, ) -> Result<(), Error>
core::fmt::Write debug info about the structure memory
usage, expanding all levels of nested structures.Source§fn mem_dbg_depth(&self, max_depth: usize, flags: DbgFlags) -> Result<(), Error>
fn mem_dbg_depth(&self, max_depth: usize, flags: DbgFlags) -> Result<(), Error>
mem_dbg, but expanding only up to max_depth
levels of nested structures.Source§fn mem_dbg_depth_on(
&self,
writer: &mut impl Write,
max_depth: usize,
flags: DbgFlags,
) -> Result<(), Error>
fn mem_dbg_depth_on( &self, writer: &mut impl Write, max_depth: usize, flags: DbgFlags, ) -> Result<(), Error>
core::fmt::Write debug info about the structure memory
usage as mem_dbg_on, but expanding only up to
max_depth levels of nested structures.