Struct rotary::bit_set::BitSet [−][src]
A fixed size bit set.
Examples
let mut set = rotary::BitSet::<u128>::empty(); assert!(!set.test(1)); set.set(1); assert!(set.test(1)); set.clear(1); assert!(!set.test(1));
The bit set can also use arrays as its backing storage.
let mut set = rotary::BitSet::<[u64; 16]>::empty(); assert!(!set.test(172)); set.set(172); assert!(set.test(172)); set.clear(172); assert!(!set.test(172));
Two bit sets of different kinds can be compared to each other.
let mut a = rotary::BitSet::<[u64; 2]>::empty(); let mut b = rotary::BitSet::<u128>::empty(); assert_eq!(a, b); a.set(111); assert_ne!(a, b); b.set(111); assert_eq!(a, b);
Implementations
impl<T> BitSet<T> where
T: Bits,
[src]
T: Bits,
pub fn empty() -> Self
[src]
Construct a new bit set that is empty, where no element is set.
Examples
let set = rotary::BitSet::<u128>::empty(); assert_eq!(set.iter().collect::<Vec<_>>(), vec![])
pub fn full() -> Self
[src]
Construct a new bit set that is full, where every single element possible is set.
Examples
let set = rotary::BitSet::<u128>::full(); assert_eq!(set.iter().collect::<Vec<_>>(), (0..128usize).collect::<Vec<_>>())
pub fn test(&self, index: usize) -> bool
[src]
Test if the given bit is set.
Examples
let mut set = rotary::BitSet::<u128>::full(); assert!(set.test(0)); assert!(set.test(1)); assert!(set.test(127)); set.clear(1); assert!(set.test(0)); assert!(!set.test(1)); assert!(set.test(127));
pub fn set(&mut self, index: usize)
[src]
Set the given bit.
Examples
let mut set = rotary::BitSet::<u128>::full(); assert!(set.test(0)); assert!(set.test(1)); assert!(set.test(127)); set.clear(1); assert!(set.test(0)); assert!(!set.test(1)); assert!(set.test(127)); set.set(1); assert!(set.test(0)); assert!(set.test(1)); assert!(set.test(127));
pub fn clear(&mut self, index: usize)
[src]
Clear the given bit.
Examples
let mut set = rotary::BitSet::<u128>::full(); assert!(set.test(0)); assert!(set.test(1)); assert!(set.test(127)); set.clear(1); assert!(set.test(0)); assert!(!set.test(1)); assert!(set.test(127)); set.set(1); assert!(set.test(0)); assert!(set.test(1)); assert!(set.test(127));
pub fn iter(&self) -> T::Iter
[src]
Construct an iterator over a bit set.
Examples
let mut set = rotary::BitSet::<u128>::empty(); set.set(3); set.set(7); assert_eq!(set.iter().collect::<Vec<_>>(), vec![3, 7]);
A larger bit set:
use rotary::Mask as _; let mut set = rotary::BitSet::<[u32; 4]>::empty(); set.set(4); set.set(63); set.set(71); assert_eq!(set.iter().collect::<Vec<_>>(), vec![4, 63, 71]);
Trait Implementations
impl<T: Clone> Clone for BitSet<T> where
T: Bits,
[src]
T: Bits,
impl<T: Copy> Copy for BitSet<T> where
T: Bits,
[src]
T: Bits,
impl<T> Debug for BitSet<T> where
T: Bits,
[src]
T: Bits,
impl<T> Eq for BitSet<T> where
T: Bits,
[src]
T: Bits,
impl<T> Hash for BitSet<T> where
T: Bits + Hash,
[src]
T: Bits + Hash,
fn hash<H: Hasher>(&self, state: &mut H)
[src]
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl<T> IntoIterator for BitSet<T> where
T: Bits,
[src]
T: Bits,
type IntoIter = T::Iter
Which kind of iterator are we turning this into?
type Item = <Self::IntoIter as Iterator>::Item
The type of the elements being iterated over.
fn into_iter(self) -> Self::IntoIter
[src]
impl<T> Mask for BitSet<T> where
T: Bits,
[src]
T: Bits,
type Iter = T::Iter
The iterator over a mask, indicating all items in the mask.
fn full() -> Self
[src]
fn test(&self, index: usize) -> bool
[src]
fn set(&mut self, index: usize)
[src]
fn clear(&mut self, index: usize)
[src]
fn iter(&self) -> Self::Iter
[src]
impl<T> Ord for BitSet<T> where
T: Bits,
[src]
T: Bits,
fn cmp(&self, other: &Self) -> Ordering
[src]
#[must_use]pub fn max(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn min(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn clamp(self, min: Self, max: Self) -> Self
1.50.0[src]
impl<T, U> PartialEq<BitSet<U>> for BitSet<T> where
T: Bits,
U: Bits,
[src]
T: Bits,
U: Bits,
fn eq(&self, other: &BitSet<U>) -> bool
[src]
#[must_use]pub fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
impl<T, U> PartialOrd<BitSet<U>> for BitSet<T> where
T: Bits,
U: Bits,
[src]
T: Bits,
U: Bits,
Auto Trait Implementations
impl<T> RefUnwindSafe for BitSet<T> where
T: RefUnwindSafe,
T: RefUnwindSafe,
impl<T> Send for BitSet<T> where
T: Send,
T: Send,
impl<T> Sync for BitSet<T> where
T: Sync,
T: Sync,
impl<T> Unpin for BitSet<T> where
T: Unpin,
T: Unpin,
impl<T> UnwindSafe for BitSet<T> where
T: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,