Struct rotary::bit_set::BitSet[][src]

#[repr(transparent)]pub struct BitSet<T> where
    T: Bits
{ /* fields omitted */ }

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]

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]

impl<T: Copy> Copy for BitSet<T> where
    T: Bits
[src]

impl<T> Debug for BitSet<T> where
    T: Bits
[src]

impl<T> Eq for BitSet<T> where
    T: Bits
[src]

impl<T> Hash for BitSet<T> where
    T: Bits + Hash
[src]

impl<T> IntoIterator for BitSet<T> where
    T: Bits
[src]

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.

impl<T> Mask for BitSet<T> where
    T: Bits
[src]

type Iter = T::Iter

The iterator over a mask, indicating all items in the mask.

impl<T> Ord for BitSet<T> where
    T: Bits
[src]

impl<T, U> PartialEq<BitSet<U>> for BitSet<T> where
    T: Bits,
    U: Bits
[src]

impl<T, U> PartialOrd<BitSet<U>> for BitSet<T> where
    T: Bits,
    U: Bits
[src]

Auto Trait Implementations

impl<T> RefUnwindSafe for BitSet<T> where
    T: RefUnwindSafe

impl<T> Send for BitSet<T> where
    T: Send

impl<T> Sync for BitSet<T> where
    T: Sync

impl<T> Unpin for BitSet<T> where
    T: Unpin

impl<T> UnwindSafe for BitSet<T> where
    T: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.