impl BitSlice for [Word] {
/// Clears bit at `idx` to 0; returns true iff this changed `self.`
+ #[inline]
fn clear_bit(&mut self, idx: usize) -> bool {
let words = self;
debug!("clear_bit: words={} idx={}",
}
/// Sets bit at `idx` to 1; returns true iff this changed `self.`
+ #[inline]
fn set_bit(&mut self, idx: usize) -> bool {
let words = self;
debug!("set_bit: words={} idx={}",
}
/// Extracts value of bit at `idx` in `self`.
+ #[inline]
fn get_bit(&self, idx: usize) -> bool {
let words = self;
let BitLookup { word, bit_mask, .. } = bit_lookup(idx);
}
impl Idx for usize {
+ #[inline]
fn new(idx: usize) -> Self { idx }
+ #[inline]
fn index(self) -> usize { self }
}
impl Idx for u32 {
+ #[inline]
fn new(idx: usize) -> Self { assert!(idx <= u32::MAX as usize); idx as u32 }
+ #[inline]
fn index(self) -> usize { self as usize }
}
pub struct $type($($pub)* u32);
impl Idx for $type {
+ #[inline]
fn new(value: usize) -> Self {
assert!(value < ($max) as usize);
$type(value as u32)
}
+ #[inline]
fn index(self) -> usize {
self.0 as usize
}