Trait bv::Bits
[−]
[src]
pub trait Bits {
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.