Trait bitsetium::BitSearch[][src]

pub trait BitSearch {
    fn find_first_set(&self, lower_bound: usize) -> Option<usize>;

    fn find_set_in_range<R>(&self, range: R) -> Option<usize>
    where
        R: RangeBounds<usize>
, { ... } }
Expand description

Search for set its.

Required methods

Searches for first bit set starting with lower_bound. Returns index of first bit set.

Example
fn validate<S: BitSearch + BitSetLimit + BitTest>(set: &S, lower_bound: usize) {
  match set.find_first_set(lower_bound) {
    None => assert!((lower_bound..=S::MAX_SET_INDEX).all(|idx| !set.test(idx))),
    Some(idx) => {
      assert!(idx <= S::MAX_SET_INDEX);
      assert!((lower_bound..idx).all(|idx| !set.test(idx)));
      assert!(set.test(idx));
    }
  }
}

Provided methods

Searches for bit set specified range. Returns index of bit set.

Example
fn validate<S: BitSearch + BitTest>(set: &S, mut range: Range<usize>) {
  match set.find_set_in_range(range.clone()) {
    None => assert!(range.all(|idx| !set.test(idx))),
    Some(idx) => {
      assert!(idx < range.end);
      assert!((range.start..idx).all(|idx| !set.test(idx)));
      assert!(set.test(idx));
    }
  }
}

Implementations on Foreign Types

Implementors