Trait bv::BitVec
[−]
[src]
pub trait BitVec { type Block: BlockType; fn bit_len(&self) -> u64; fn bit_offset(&self) -> u8; fn block_len(&self) -> usize { ... } fn get_bit(&self, position: u64) -> bool { ... } fn get_block(&self, position: usize) -> Self::Block { ... } fn get_bits(&self, start: u64, count: usize) -> Self::Block { ... } }
Read-only bit vector operations.
Minimal complete definition is get_bit
or get_block
, since each
is defined in terms of the other. Note that get_block
in terms of
get_bit
is inefficient, and thus you should implement get_block
directly if possible.
Associated Types
Required Methods
fn bit_len(&self) -> u64
The length of the slice in bits.
fn bit_offset(&self) -> u8
The number of bits into the first block that the bit vector starts.
Must be less than Block::nbits()
.
Provided Methods
fn block_len(&self) -> usize
The length of the slice in blocks.
fn get_bit(&self, position: u64) -> bool
Gets the bit at position
The default implementation calls get_block
and masks out the
correct bit.
Panics
Panics if position
is out of bounds.
fn get_block(&self, position: usize) -> Self::Block
Gets the block at position
The bits are laid out Block::nbits()
per block, with the notional
zeroth bit in the least significant position. If self.bit_len()
is
not a multiple of Block::nbits()
then the last block will
contain extra bits that are not part of the bit vector.
The default implementation assembles a block by reading each of its bits. Consider it a slow reference implementation, and override it.
Panics
Panics if position
is out of bounds.
fn get_bits(&self, start: u64, count: usize) -> Self::Block
Gets count
bits starting at bit index start
, interpreted as a
little-endian integer.
Panics
Panics if the bit span goes out of bounds.