Trait bv::BlockType[][src]

pub trait BlockType: Copy + PartialEq + Ord + BitAnd<Output = Self> + BitOr<Output = Self> + BitXor<Output = Self> + Not<Output = Self> + Shl<usize, Output = Self> + Shr<usize, Output = Self> + Sub<Output = Self> {
    fn leading_zeros(self) -> usize;
fn to_usize(self) -> Option<usize>;
fn zero() -> Self;
fn one() -> Self; fn nbits() -> usize { ... }
fn div_nbits(index: u64) -> usize { ... }
fn checked_div_nbits(index: u64) -> Option<usize> { ... }
fn ceil_div_nbits(index: u64) -> usize { ... }
fn checked_ceil_div_nbits(index: u64) -> Option<usize> { ... }
fn mod_nbits(index: u64) -> usize { ... }
fn mul_nbits(index: usize) -> u64 { ... }
fn block_bits(len: u64, position: usize) -> usize { ... }
fn last_block_bits(len: u64) -> usize { ... }
fn lg_nbits() -> usize { ... }
fn lg_nbits_mask<Result: BlockType>() -> Result { ... }
fn low_mask(element_bits: usize) -> Self { ... }
fn nth_mask(bit_index: usize) -> Self { ... }
fn get_bit(self, bit_index: usize) -> bool { ... }
fn with_bit(self, bit_index: usize, bit_value: bool) -> Self { ... }
fn get_bits(self, start: usize, len: usize) -> Self { ... }
fn with_bits(self, start: usize, len: usize, value: Self) -> Self { ... }
fn ceil_lg(self) -> usize { ... }
fn floor_lg(self) -> usize { ... } }

Interface to primitive bit storage.

Types implementing this trait can be used as the blocks of a bit-vector.

Required Methods

Returns the number of leading zero bits in the given number.

Converts the number to a usize, if it fits.

Returns 0.

Returns 1.

Provided Methods

The number of bits in a block.

Returns index / Self::nbits(), computed by shifting.

This is intended for converting a bit address into a block address, which is why it takes u64 and returns usize. There is no check that the result actually fits in a usize, so this should only be used when index is already known to be small enough.

Returns index / Self::nbits(), computed by shifting.

This is intended for converting a bit address into a block address, which is why it takes u64 and returns usize. It can only fail (returning None) if usize is 32 bits.

Returns index / Self::nbits() rounded up, computed by shifting.

This is intended for converting a bit size into a block size, which is why it takes u64 and returns usize.

Returns index / Self::nbits() rounded up, computed by shifting.

This is intended for converting a bit size into a block size, which is why it takes u64 and returns usize. There is no check that the result actually fits in a usize, so this should only be used when index is already known to be small enough.

Returns index % Self::nbits(), computed by masking.

This is intended for converting a bit address into a bit offset within a block, which is why it takes u64 and returns usize.

Returns index * Self::nbits(), computed by shifting.

This is intended for converting a block address into a bit address, which is why it takes a usize and returns a u64.

The number of bits in the block at position, given a total bit length of len.

This will be Self::nbits() for all but the last block, for which it will be Self::last_block_bits(len).

Precondition

position * Self::nbits() <= len, or the block doesn't exist and the result is undefined.

Computes how many bits are in the last block of an array of len bits.

This is like Self::mod_nbits, but it returns Self::nbits() in lieu of 0. Note that this means that if you have 0 bits then the last block is full.

Log-base-2 of the number of bits in a block.

Mask with the lowest-order lg_nbits() set.

The bit mask consisting of Self::nbits() - element_bits zeroes followed by element_bits ones.

Precondition

element_bits <= Self::nbits()

The bit mask with the bit_indexth bit set.

Bits are index in little-endian style based at 0.

Precondition

bit_index < Self::nbits()

Extracts the value of the bit_indexth bit.

Panics

Panics if bit_index is out of bounds.

Functionally updates the value of the bit_indexth bit to bit_value.

Panics

Panics if bit_index is out of bounds.

Extracts len bits starting at bit offset start.

Panics

Panics of the bit span is out of bounds.

Functionally updates len bits to value starting at offset start.

Panics

Panics of the bit span is out of bounds.

Returns the smallest number n such that 2.pow(n) >= self.

Returns the largest number n such that 2.pow(n) <= self.

Implementations on Foreign Types

impl BlockType for u8
[src]

impl BlockType for u16
[src]

impl BlockType for u32
[src]

impl BlockType for u64
[src]

impl BlockType for u128
[src]

impl BlockType for usize
[src]

Implementors