Struct sucds::bit_vectors::rank9sel::inner::Rank9SelIndex
source · pub struct Rank9SelIndex { /* private fields */ }
Expand description
The index implementation of Rank9Sel
separated from the bit vector.
Implementations§
source§impl Rank9SelIndex
impl Rank9SelIndex
sourcepub fn select1_hints(self) -> Self
pub fn select1_hints(self) -> Self
Builds an index for faster select1
.
sourcepub fn select0_hints(self) -> Self
pub fn select0_hints(self) -> Self
Builds an index for faster select0
.
sourcepub unsafe fn rank1(&self, bv: &BitVector, pos: usize) -> Option<usize>
pub unsafe fn rank1(&self, bv: &BitVector, pos: usize) -> Option<usize>
Returns the number of ones from the 0-th bit to the pos-1
-th bit, or
None
if bv.len() < pos
.
Arguments
bv
: Bit vector used in construction.pos
: Bit position.
Complexity
- Constant
Safety
bv
must be the one used in construction.
Examples
use sucds::bit_vectors::{BitVector, rank9sel::inner::Rank9SelIndex};
let bv = BitVector::from_bits([true, false, false, true]);
let idx = Rank9SelIndex::new(&bv);
unsafe {
assert_eq!(idx.rank1(&bv, 1), Some(1));
assert_eq!(idx.rank1(&bv, 2), Some(1));
assert_eq!(idx.rank1(&bv, 3), Some(1));
assert_eq!(idx.rank1(&bv, 4), Some(2));
assert_eq!(idx.rank1(&bv, 5), None);
}
sourcepub unsafe fn rank0(&self, bv: &BitVector, pos: usize) -> Option<usize>
pub unsafe fn rank0(&self, bv: &BitVector, pos: usize) -> Option<usize>
Returns the number of zeros from the 0-th bit to the pos-1
-th bit, or
None
if bv.len() < pos
.
Arguments
bv
: Bit vector used in construction.pos
: Bit position.
Complexity
- Constant
Safety
bv
must be the one used in construction.
Examples
use sucds::bit_vectors::{BitVector, rank9sel::inner::Rank9SelIndex};
let bv = BitVector::from_bits([true, false, false, true]);
let idx = Rank9SelIndex::new(&bv);
unsafe {
assert_eq!(idx.rank0(&bv, 1), Some(0));
assert_eq!(idx.rank0(&bv, 2), Some(1));
assert_eq!(idx.rank0(&bv, 3), Some(2));
assert_eq!(idx.rank0(&bv, 4), Some(2));
assert_eq!(idx.rank0(&bv, 5), None);
}
sourcepub unsafe fn select1(&self, bv: &BitVector, k: usize) -> Option<usize>
pub unsafe fn select1(&self, bv: &BitVector, k: usize) -> Option<usize>
Searches the position of the k
-th bit set, or
None
if self.num_ones() <= k
.
Arguments
bv
: Bit vector used in construction.k
: Select query.
Complexity
- Logarithmic
Safety
bv
must be the one used in construction.
Examples
use sucds::bit_vectors::{BitVector, rank9sel::inner::Rank9SelIndex};
let bv = BitVector::from_bits([true, false, false, true]);
let idx = Rank9SelIndex::new(&bv).select1_hints();
unsafe {
assert_eq!(idx.select1(&bv, 0), Some(0));
assert_eq!(idx.select1(&bv, 1), Some(3));
assert_eq!(idx.select1(&bv, 2), None);
}
sourcepub unsafe fn select0(&self, bv: &BitVector, k: usize) -> Option<usize>
pub unsafe fn select0(&self, bv: &BitVector, k: usize) -> Option<usize>
Searches the position of the k
-th bit unset, or
None
if self.num_zeros() <= k
.
Arguments
bv
: Bit vector used in construction.k
: Select query.
Complexity
- Logarithmic
Safety
bv
must be the one used in construction.
Examples
use sucds::bit_vectors::{BitVector, rank9sel::inner::Rank9SelIndex};
let bv = BitVector::from_bits([true, false, false, true]);
let idx = Rank9SelIndex::new(&bv).select0_hints();
unsafe {
assert_eq!(idx.select0(&bv, 0), Some(1));
assert_eq!(idx.select0(&bv, 1), Some(2));
assert_eq!(idx.select0(&bv, 2), None);
}
Trait Implementations§
source§impl Clone for Rank9SelIndex
impl Clone for Rank9SelIndex
source§fn clone(&self) -> Rank9SelIndex
fn clone(&self) -> Rank9SelIndex
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for Rank9SelIndex
impl Debug for Rank9SelIndex
source§impl Default for Rank9SelIndex
impl Default for Rank9SelIndex
source§fn default() -> Rank9SelIndex
fn default() -> Rank9SelIndex
Returns the “default value” for a type. Read more
source§impl PartialEq for Rank9SelIndex
impl PartialEq for Rank9SelIndex
source§fn eq(&self, other: &Rank9SelIndex) -> bool
fn eq(&self, other: &Rank9SelIndex) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl Serializable for Rank9SelIndex
impl Serializable for Rank9SelIndex
source§fn serialize_into<W: Write>(&self, writer: W) -> Result<usize>
fn serialize_into<W: Write>(&self, writer: W) -> Result<usize>
Serializes the data structure into the writer,
returning the number of serialized bytes. Read more
source§fn deserialize_from<R: Read>(reader: R) -> Result<Self>
fn deserialize_from<R: Read>(reader: R) -> Result<Self>
Deserializes the data structure from the reader. Read more
source§fn size_in_bytes(&self) -> usize
fn size_in_bytes(&self) -> usize
Returns the number of bytes to serialize the data structure.
impl Eq for Rank9SelIndex
impl StructuralEq for Rank9SelIndex
impl StructuralPartialEq for Rank9SelIndex
Auto Trait Implementations§
impl RefUnwindSafe for Rank9SelIndex
impl Send for Rank9SelIndex
impl Sync for Rank9SelIndex
impl Unpin for Rank9SelIndex
impl UnwindSafe for Rank9SelIndex
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more