pub struct BitChunks<'a> {
buffer: &'a [u8],
bit_offset: usize,
chunk_len: usize,
remainder_len: usize,
}Expand description
Iterates over an arbitrarily aligned byte buffer 64 bits at a time
Self::iter yields iterator of u64, and a remainder. The first byte in the buffer
will be the least significant byte in output u64
Fields§
§buffer: &'a [u8]§bit_offset: usizeoffset inside a byte, guaranteed to be between 0 and 7 (inclusive)
chunk_len: usizenumber of complete u64 chunks
remainder_len: usizenumber of remaining bits, guaranteed to be between 0 and 63 (inclusive)
Implementations§
Source§impl<'a> BitChunks<'a>
impl<'a> BitChunks<'a>
Sourcepub const fn remainder_len(&self) -> usize
pub const fn remainder_len(&self) -> usize
Returns the number of remaining bits, guaranteed to be between 0 and 63 (inclusive)
Sourcepub fn remainder_bits(&self) -> u64
pub fn remainder_bits(&self) -> u64
Returns the bitmask of remaining bits
Sourcepub fn num_u64s(&self) -> usize
pub fn num_u64s(&self) -> usize
Return the number of u64 that are needed to represent all bits
(including remainder).
This is equal to chunk_len + 1 if there is a remainder,
otherwise it is equal to chunk_len.
Sourcepub fn num_bytes(&self) -> usize
pub fn num_bytes(&self) -> usize
Return the number of bytes that are needed to represent all bits (including remainder).
Sourcepub const fn iter(&self) -> BitChunkIterator<'a> ⓘ
pub const fn iter(&self) -> BitChunkIterator<'a> ⓘ
Returns an iterator over chunks of 64 bits represented as an u64
Sourcepub fn iter_padded(&self) -> impl Iterator<Item = u64> + 'a
pub fn iter_padded(&self) -> impl Iterator<Item = u64> + 'a
Returns an iterator over chunks of 64 bits, with the remaining bits zero padded to 64-bits