Struct bitm::RankSimple

source ·
pub struct RankSimple<BV = Box<[u64]>> {
    pub content: BV,
    pub ranks: Box<[u32]>,
}
Expand description

The structure that holds array of bits content and ranks structure that takes no more than 6.25% extra space. It can returns the number of ones in first index bits of the content (see rank method) in O(1) time. Only content with less than 232 bit ones is supported. Any type that implements the Deref trait with Target = [u64] can be used as a bit vector.

Usually RankSelect101111 should be preferred to ArrayWithRankSimple.

Fields§

§content: BV§ranks: Box<[u32]>

Implementations§

source§

impl<BV: Deref<Target = [u64]>> RankSimple<BV>

source

pub fn build(content: BV) -> (Self, u32)

Constructs ArrayWithRankSimple and count number of bits set in content. Returns both.

source

pub fn try_rank(&self, index: usize) -> Option<u32>

source

pub fn rank(&self, index: usize) -> u32

Trait Implementations§

source§

impl<BV: Deref<Target = [u64]>> AsRef<[u64]> for RankSimple<BV>

source§

fn as_ref(&self) -> &[u64]

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<BV: Clone> Clone for RankSimple<BV>

source§

fn clone(&self) -> RankSimple<BV>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<BV: Deref<Target = [u64]>> From<BV> for RankSimple<BV>

source§

fn from(value: BV) -> Self

Converts to this type from the input type.
source§

impl<BV: GetSize> GetSize for RankSimple<BV>

source§

fn size_bytes_dyn(&self) -> usize

Returns approximate number of bytes occupied by dynamic (heap) part of self. Same as self.size_bytes() - std::mem::size_of_val(self).
source§

const USES_DYN_MEM: bool = true

true if and only if the variables of this type can use dynamic (heap) memory.
source§

fn size_bytes_content_dyn(&self) -> usize

Returns approximate number of bytes occupied by dynamic (heap) part of self content. It usually equals to size_bytes_dyn(). However, sometimes it is smaller by the amount of memory reserved but not yet used (e.g., size_bytes_content_dyn() only takes into account the length of the vector and not its capacity).
source§

fn size_bytes(&self) -> usize

Returns approximate, total (including heap memory) number of bytes occupied by self.
source§

impl<BV: Deref<Target = [u64]>> Rank for RankSimple<BV>

source§

fn try_rank(&self, index: usize) -> Option<usize>

Returns the number of ones in first index bits or None if index is out of bounds.
source§

fn rank(&self, index: usize) -> usize

Returns the number of ones in first index bits or panics if index is out of bounds.
source§

unsafe fn rank_unchecked(&self, index: usize) -> usize

Returns the number of ones in first index bits. The result is undefined if index is out of bounds.
source§

fn try_rank0(&self, index: usize) -> Option<usize>

Returns the number of zeros in first index bits or None if index is out of bounds.
source§

fn rank0(&self, index: usize) -> usize

Returns the number of zeros in first index bits or panics if index is out of bounds.
source§

unsafe fn rank0_unchecked(&self, index: usize) -> usize

Returns the number of ones in first index bits. The result is undefined if index is out of bounds.

Auto Trait Implementations§

§

impl<BV> RefUnwindSafe for RankSimple<BV>
where BV: RefUnwindSafe,

§

impl<BV> Send for RankSimple<BV>
where BV: Send,

§

impl<BV> Sync for RankSimple<BV>
where BV: Sync,

§

impl<BV> Unpin for RankSimple<BV>
where BV: Unpin,

§

impl<BV> UnwindSafe for RankSimple<BV>
where BV: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.