Struct BitSet

Source
pub struct BitSet<V: BitValue> { /* private fields */ }
Expand description

A set of V, stored as a bit set.

Implementations§

Source§

impl<V: BitValue> BitSet<V>

Source

pub const fn new() -> Self

Creates an empty bit set that doesn’t contain any values.

Source

pub fn words(&self) -> &[Word]

Returns a reference to the underlying Words making up this BitSet.

Note that the Word type varies in size and endianness between platforms, so if you want to use this for cross-platform serialization, make sure to convert the data to something portable first.

The number of Words that make up any given BitSet can also vary between platforms, and is generally only guaranteed to be large enough to store <V as BitValue>::MAX, but may be arbitrarily larger.

Source

pub fn words_mut(&mut self) -> &mut [Word]

Returns a mutable reference to the underlying Words making up this BitSet.

You should not set any bits to 1 whose indices are larger than <V as BitValue>::MAX. Doing so might cause the BitSet to behave incorrectly.

Note that the Word type varies in size between platforms.

Source

pub fn len(&self) -> usize

Returns the number of elements in this BitSet (the number of set bits).

Source

pub fn is_empty(&self) -> bool

Returns whether this BitSet is empty (contains no set bits).

Source

pub fn contains(&self, value: V) -> bool

Returns whether self contains value.

Source

pub fn insert(&mut self, value: V) -> bool

Inserts value into self, setting the appropriate bit.

Returns true if value was newly inserted, or false if it was already present.

§Panics

Panics if value is larger than <V as BitValue>::MAX.

Source

pub fn remove(&mut self, value: V) -> bool

Removes value from the set.

Returns true if it was present and has been removed, or false if it was not present.

Source

pub fn iter(&self) -> Iter<'_, V>

Returns an iterator over all values in self.

Trait Implementations§

Source§

impl<V: BitValue> Clone for BitSet<V>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<V: BitValue + Debug> Debug for BitSet<V>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<V: BitValue> Default for BitSet<V>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<V: BitValue> Extend<V> for BitSet<V>

Source§

fn extend<T: IntoIterator<Item = V>>(&mut self, iter: T)

Extends a collection with the contents of an iterator. Read more
Source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Source§

impl<V: BitValue> FromIterator<V> for BitSet<V>

Source§

fn from_iter<T: IntoIterator<Item = V>>(iter: T) -> Self

Creates a value from an iterator. Read more
Source§

impl<'a, V: BitValue> IntoIterator for &'a BitSet<V>

Source§

type Item = V

The type of the elements being iterated over.
Source§

type IntoIter = Iter<'a, V>

Which kind of iterator are we turning this into?
Source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
Source§

impl<V: BitValue> IntoIterator for BitSet<V>

Source§

type Item = V

The type of the elements being iterated over.
Source§

type IntoIter = IntoIter<V>

Which kind of iterator are we turning this into?
Source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
Source§

impl<V: BitValue> PartialEq for BitSet<V>

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<V: BitValue> Copy for BitSet<V>

Source§

impl<V: BitValue> Eq for BitSet<V>

Auto Trait Implementations§

§

impl<V> Freeze for BitSet<V>
where <V as BitValueImpl>::__PrivateArray: Freeze,

§

impl<V> RefUnwindSafe for BitSet<V>
where <V as BitValueImpl>::__PrivateArray: RefUnwindSafe,

§

impl<V> Send for BitSet<V>
where <V as BitValueImpl>::__PrivateArray: Send,

§

impl<V> Sync for BitSet<V>
where <V as BitValueImpl>::__PrivateArray: Sync,

§

impl<V> Unpin for BitSet<V>
where <V as BitValueImpl>::__PrivateArray: Unpin,

§

impl<V> UnwindSafe for BitSet<V>
where <V as BitValueImpl>::__PrivateArray: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.