Trait succinct::bit_vector::Bits
[−]
[src]
pub trait Bits { type Block: BlockType; fn bit_len(&self) -> u64; 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 { ... } }
Interface for 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
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.
Implementors
impl<Inner: Bits> Bits for BitBuffer<Inner>
impl<Block: BlockType> Bits for [Block]
impl Bits for Vec<bool>
impl<Block: BlockType> Bits for BitVec<Block>
impl<'a, Base: 'a + Bits> Bits for BitSlice<'a, Base>
impl<'a, Base: 'a + BitsMut> Bits for BitSliceMut<'a, Base>
impl Bits for u8
impl Bits for u16
impl Bits for u32
impl Bits for u64
impl Bits for usize
impl<Block: BlockType> Bits for IntVec<Block>
impl<'a, Store: ?Sized + Bits + 'a> Bits for JacobsonRank<'a, Store>
impl<'a, Rank: Bits + 'a> Bits for BinSearchSelect<'a, Rank>