Struct myopic_board::enumset::EnumSet[]

pub struct EnumSet<T> where
    T: EnumSetType
{ /* fields omitted */ }

An efficient set type for enums.

It is implemented using a bitset stored using the smallest integer that can fit all bits in the underlying enum. In general, an enum variant with a numeric value of n is stored in the nth least significant bit (corresponding with a mask of, e.g. 1 << enum as u32).

Serialization

When the serde feature is enabled, EnumSets can be serialized and deserialized using the serde crate. The exact serialization format can be controlled with additional attributes on the enum type. These attributes are valid regardless of whether the serde feature is enabled.

By default, EnumSets serialize by directly writing out the underlying bitset as an integer of the smallest type that can fit in the underlying enum. You can add a #[enumset(serialize_repr = "u8")] attribute to your enum to control the integer type used for serialization. This can be important for avoiding unintentional breaking changes when EnumSets are serialized with formats like bincode.

By default, unknown bits are ignored and silently removed from the bitset. To override this behavior, you can add a #[enumset(serialize_deny_unknown)] attribute. This will cause deserialization to fail if an invalid bit is set.

In addition, the #[enumset(serialize_as_list)] attribute causes the EnumSet to be instead serialized as a list of enum variants. This requires your enum type implement [Serialize] and [Deserialize]. Note that this is a breaking change

Implementations

impl<T> EnumSet<T> where
    T: EnumSetType

pub fn new() -> EnumSet<T>

Creates an empty EnumSet.

pub fn only(t: T) -> EnumSet<T>

Returns an EnumSet containing a single element.

pub fn empty() -> EnumSet<T>

Creates an empty EnumSet.

This is an alias for EnumSet::new.

pub fn all() -> EnumSet<T>

Returns an EnumSet containing all valid variants of the enum.

pub fn bit_width() -> u32

Total number of bits used by this type. Note that the actual amount of space used is rounded up to the next highest integer type (u8, u16, u32, u64, or u128).

This is the same as EnumSet::variant_count except in enums with “sparse” variants. (e.g. enum Foo { A = 10, B = 20 })

pub fn variant_count() -> u32

The number of valid variants that this type can contain.

This is the same as EnumSet::bit_width except in enums with “sparse” variants. (e.g. enum Foo { A = 10, B = 20 })

pub fn len(&self) -> usize

Returns the number of elements in this set.

pub fn is_empty(&self) -> bool

Returns true if the set contains no elements.

pub fn clear(&mut self)

Removes all elements from the set.

pub fn is_disjoint(&self, other: EnumSet<T>) -> bool

Returns true if self has no elements in common with other. This is equivalent to checking for an empty intersection.

pub fn is_superset(&self, other: EnumSet<T>) -> bool

Returns true if the set is a superset of another, i.e., self contains at least all the values in other.

pub fn is_subset(&self, other: EnumSet<T>) -> bool

Returns true if the set is a subset of another, i.e., other contains at least all the values in self.

pub fn union(&self, other: EnumSet<T>) -> EnumSet<T>

Returns a set containing any elements present in either set.

pub fn intersection(&self, other: EnumSet<T>) -> EnumSet<T>

Returns a set containing every element present in both sets.

pub fn difference(&self, other: EnumSet<T>) -> EnumSet<T>

Returns a set containing element present in self but not in other.

pub fn symmetrical_difference(&self, other: EnumSet<T>) -> EnumSet<T>

Returns a set containing every element present in either self or other, but is not present in both.

pub fn complement(&self) -> EnumSet<T>

Returns a set containing all enum variants not in this set.

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

Checks whether this set contains a value.

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

Adds a value to this set.

If the set did not have this value present, true is returned.

If the set did have this value present, false is returned.

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

Removes a value from this set. Returns whether the value was present in the set.

pub fn insert_all(&mut self, other: EnumSet<T>)

Adds all elements in another set to this one.

pub fn remove_all(&mut self, other: EnumSet<T>)

Removes all values in another set from this one.

pub fn iter(&self) -> EnumSetIter<T>

Notable traits for EnumSetIter<T>

impl<T> Iterator for EnumSetIter<T> where
    T: EnumSetType
type Item = T;

Creates an iterator over the values in this set.

Note that iterator invalidation is impossible as the iterator contains a copy of this type, rather than holding a reference to it.

impl<T> EnumSet<T> where
    T: EnumSetType

pub fn as_u8(&self) -> u8

Returns a u8 representing the elements of this set.

If the underlying bitset will not fit in a u8, this method will panic.

pub fn try_as_u8(&self) -> Option<u8>

Tries to return a u8 representing the elements of this set.

If the underlying bitset will not fit in a u8, this method will instead return None.

pub fn as_u8_truncated(&self) -> u8

Returns a truncated u8 representing the elements of this set.

If the underlying bitset will not fit in a u8, this method will truncate any bits that don’t fit.

pub fn from_u8(bits: u8) -> EnumSet<T>

Constructs a bitset from a u8.

If a bit that doesn’t correspond to an enum variant is set, this method will panic.

pub fn try_from_u8(bits: u8) -> Option<EnumSet<T>>

Attempts to constructs a bitset from a u8.

If a bit that doesn’t correspond to an enum variant is set, this method will return None.

pub fn from_u8_truncated(bits: u8) -> EnumSet<T>

Constructs a bitset from a u8, ignoring invalid variants.

pub fn as_u16(&self) -> u16

Returns a u16 representing the elements of this set.

If the underlying bitset will not fit in a u16, this method will panic.

pub fn try_as_u16(&self) -> Option<u16>

Tries to return a u16 representing the elements of this set.

If the underlying bitset will not fit in a u16, this method will instead return None.

pub fn as_u16_truncated(&self) -> u16

Returns a truncated u16 representing the elements of this set.

If the underlying bitset will not fit in a u16, this method will truncate any bits that don’t fit.

pub fn from_u16(bits: u16) -> EnumSet<T>

Constructs a bitset from a u16.

If a bit that doesn’t correspond to an enum variant is set, this method will panic.

pub fn try_from_u16(bits: u16) -> Option<EnumSet<T>>

Attempts to constructs a bitset from a u16.

If a bit that doesn’t correspond to an enum variant is set, this method will return None.

pub fn from_u16_truncated(bits: u16) -> EnumSet<T>

Constructs a bitset from a u16, ignoring invalid variants.

pub fn as_u32(&self) -> u32

Returns a u32 representing the elements of this set.

If the underlying bitset will not fit in a u32, this method will panic.

pub fn try_as_u32(&self) -> Option<u32>

Tries to return a u32 representing the elements of this set.

If the underlying bitset will not fit in a u32, this method will instead return None.

pub fn as_u32_truncated(&self) -> u32

Returns a truncated u32 representing the elements of this set.

If the underlying bitset will not fit in a u32, this method will truncate any bits that don’t fit.

pub fn from_u32(bits: u32) -> EnumSet<T>

Constructs a bitset from a u32.

If a bit that doesn’t correspond to an enum variant is set, this method will panic.

pub fn try_from_u32(bits: u32) -> Option<EnumSet<T>>

Attempts to constructs a bitset from a u32.

If a bit that doesn’t correspond to an enum variant is set, this method will return None.

pub fn from_u32_truncated(bits: u32) -> EnumSet<T>

Constructs a bitset from a u32, ignoring invalid variants.

pub fn as_u64(&self) -> u64

Returns a u64 representing the elements of this set.

If the underlying bitset will not fit in a u64, this method will panic.

pub fn try_as_u64(&self) -> Option<u64>

Tries to return a u64 representing the elements of this set.

If the underlying bitset will not fit in a u64, this method will instead return None.

pub fn as_u64_truncated(&self) -> u64

Returns a truncated u64 representing the elements of this set.

If the underlying bitset will not fit in a u64, this method will truncate any bits that don’t fit.

pub fn from_u64(bits: u64) -> EnumSet<T>

Constructs a bitset from a u64.

If a bit that doesn’t correspond to an enum variant is set, this method will panic.

pub fn try_from_u64(bits: u64) -> Option<EnumSet<T>>

Attempts to constructs a bitset from a u64.

If a bit that doesn’t correspond to an enum variant is set, this method will return None.

pub fn from_u64_truncated(bits: u64) -> EnumSet<T>

Constructs a bitset from a u64, ignoring invalid variants.

pub fn as_u128(&self) -> u128

Returns a u128 representing the elements of this set.

If the underlying bitset will not fit in a u128, this method will panic.

pub fn try_as_u128(&self) -> Option<u128>

Tries to return a u128 representing the elements of this set.

If the underlying bitset will not fit in a u128, this method will instead return None.

pub fn as_u128_truncated(&self) -> u128

Returns a truncated u128 representing the elements of this set.

If the underlying bitset will not fit in a u128, this method will truncate any bits that don’t fit.

pub fn from_u128(bits: u128) -> EnumSet<T>

Constructs a bitset from a u128.

If a bit that doesn’t correspond to an enum variant is set, this method will panic.

pub fn try_from_u128(bits: u128) -> Option<EnumSet<T>>

Attempts to constructs a bitset from a u128.

If a bit that doesn’t correspond to an enum variant is set, this method will return None.

pub fn from_u128_truncated(bits: u128) -> EnumSet<T>

Constructs a bitset from a u128, ignoring invalid variants.

pub fn as_usize(&self) -> usize

Returns a usize representing the elements of this set.

If the underlying bitset will not fit in a usize, this method will panic.

pub fn try_as_usize(&self) -> Option<usize>

Tries to return a usize representing the elements of this set.

If the underlying bitset will not fit in a usize, this method will instead return None.

pub fn as_usize_truncated(&self) -> usize

Returns a truncated usize representing the elements of this set.

If the underlying bitset will not fit in a usize, this method will truncate any bits that don’t fit.

pub fn from_usize(bits: usize) -> EnumSet<T>

Constructs a bitset from a usize.

If a bit that doesn’t correspond to an enum variant is set, this method will panic.

pub fn try_from_usize(bits: usize) -> Option<EnumSet<T>>

Attempts to constructs a bitset from a usize.

If a bit that doesn’t correspond to an enum variant is set, this method will return None.

pub fn from_usize_truncated(bits: usize) -> EnumSet<T>

Constructs a bitset from a usize, ignoring invalid variants.

Trait Implementations

impl<T, O> BitAnd<O> for EnumSet<T> where
    T: EnumSetType,
    O: Into<EnumSet<T>>, 

type Output = EnumSet<T>

The resulting type after applying the & operator.

pub fn bitand(self, other: O) -> <EnumSet<T> as BitAnd<O>>::Output

Performs the & operation. Read more

impl<T, O> BitAndAssign<O> for EnumSet<T> where
    T: EnumSetType,
    O: Into<EnumSet<T>>, 

pub fn bitand_assign(&mut self, rhs: O)

Performs the &= operation. Read more

impl<T, O> BitOr<O> for EnumSet<T> where
    T: EnumSetType,
    O: Into<EnumSet<T>>, 

type Output = EnumSet<T>

The resulting type after applying the | operator.

pub fn bitor(self, other: O) -> <EnumSet<T> as BitOr<O>>::Output

Performs the | operation. Read more

impl<T, O> BitOrAssign<O> for EnumSet<T> where
    T: EnumSetType,
    O: Into<EnumSet<T>>, 

pub fn bitor_assign(&mut self, rhs: O)

Performs the |= operation. Read more

impl<T, O> BitXor<O> for EnumSet<T> where
    T: EnumSetType,
    O: Into<EnumSet<T>>, 

type Output = EnumSet<T>

The resulting type after applying the ^ operator.

pub fn bitxor(self, other: O) -> <EnumSet<T> as BitXor<O>>::Output

Performs the ^ operation. Read more

impl<T, O> BitXorAssign<O> for EnumSet<T> where
    T: EnumSetType,
    O: Into<EnumSet<T>>, 

pub fn bitxor_assign(&mut self, rhs: O)

Performs the ^= operation. Read more

impl<T> Clone for EnumSet<T> where
    T: Clone + EnumSetType,
    <T as EnumSetTypePrivate>::Repr: Clone

pub fn clone(&self) -> EnumSet<T>

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl<T> Debug for EnumSet<T> where
    T: EnumSetType + Debug

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

Formats the value using the given formatter. Read more

impl<T> Default for EnumSet<T> where
    T: EnumSetType

pub fn default() -> EnumSet<T>

Returns an empty set.

impl<T> Extend<EnumSet<T>> for EnumSet<T> where
    T: EnumSetType

pub fn extend<I>(&mut self, iter: I) where
    I: IntoIterator<Item = EnumSet<T>>, 

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

fn extend_one(&mut self, item: A)[src]

🔬 This is a nightly-only experimental API. (extend_one)

Extends a collection with exactly one element.

fn extend_reserve(&mut self, additional: usize)[src]

🔬 This is a nightly-only experimental API. (extend_one)

Reserves capacity in a collection for the given number of additional elements. Read more

impl<T> Extend<T> for EnumSet<T> where
    T: EnumSetType

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

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

fn extend_one(&mut self, item: A)[src]

🔬 This is a nightly-only experimental API. (extend_one)

Extends a collection with exactly one element.

fn extend_reserve(&mut self, additional: usize)[src]

🔬 This is a nightly-only experimental API. (extend_one)

Reserves capacity in a collection for the given number of additional elements. Read more

impl<T> From<T> for EnumSet<T> where
    T: EnumSetType

pub fn from(t: T) -> EnumSet<T>

Performs the conversion.

impl<T> FromIterator<EnumSet<T>> for EnumSet<T> where
    T: EnumSetType

pub fn from_iter<I>(iter: I) -> EnumSet<T> where
    I: IntoIterator<Item = EnumSet<T>>, 

Creates a value from an iterator. Read more

impl<T> FromIterator<T> for EnumSet<T> where
    T: EnumSetType

pub fn from_iter<I>(iter: I) -> EnumSet<T> where
    I: IntoIterator<Item = T>, 

Creates a value from an iterator. Read more

impl<T> Hash for EnumSet<T> where
    T: EnumSetType

pub fn hash<H>(&self, state: &mut H) where
    H: Hasher

Feeds this value into the given Hasher. Read more

fn hash_slice<H>(data: &[Self], state: &mut H) where
    H: Hasher
1.3.0[src]

Feeds a slice of this type into the given Hasher. Read more

impl<T> IntoIterator for EnumSet<T> where
    T: EnumSetType

type Item = T

The type of the elements being iterated over.

type IntoIter = EnumSetIter<T>

Which kind of iterator are we turning this into?

pub fn into_iter(self) -> <EnumSet<T> as IntoIterator>::IntoIter

Creates an iterator from a value. Read more

impl<T> Not for EnumSet<T> where
    T: EnumSetType

type Output = EnumSet<T>

The resulting type after applying the ! operator.

pub fn not(self) -> <EnumSet<T> as Not>::Output

Performs the unary ! operation. Read more

impl<T> Ord for EnumSet<T> where
    T: EnumSetType

pub fn cmp(&self, other: &EnumSet<T>) -> Ordering

This method returns an Ordering between self and other. Read more

#[must_use]
fn max(self, other: Self) -> Self
1.21.0[src]

Compares and returns the maximum of two values. Read more

#[must_use]
fn min(self, other: Self) -> Self
1.21.0[src]

Compares and returns the minimum of two values. Read more

#[must_use]
fn clamp(self, min: Self, max: Self) -> Self
1.50.0[src]

Restrict a value to a certain interval. Read more

impl PartialEq<EnumSet<CastleZone>> for CastleZone[src]

pub fn eq(&self, other: &EnumSet<CastleZone>) -> bool[src]

This method tests for self and other values to be equal, and is used by ==. Read more

#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests for !=.

impl PartialEq<EnumSet<Dir>> for Dir[src]

pub fn eq(&self, other: &EnumSet<Dir>) -> bool[src]

This method tests for self and other values to be equal, and is used by ==. Read more

#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests for !=.

impl PartialEq<EnumSet<Piece>> for Piece[src]

pub fn eq(&self, other: &EnumSet<Piece>) -> bool[src]

This method tests for self and other values to be equal, and is used by ==. Read more

#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests for !=.

impl<T> PartialEq<EnumSet<T>> for EnumSet<T> where
    T: PartialEq<T> + EnumSetType,
    <T as EnumSetTypePrivate>::Repr: PartialEq<<T as EnumSetTypePrivate>::Repr>, 

pub fn eq(&self, other: &EnumSet<T>) -> bool

This method tests for self and other values to be equal, and is used by ==. Read more

pub fn ne(&self, other: &EnumSet<T>) -> bool

This method tests for !=.

impl<T> PartialEq<T> for EnumSet<T> where
    T: EnumSetType

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

This method tests for self and other values to be equal, and is used by ==. Read more

#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests for !=.

impl<T> PartialOrd<EnumSet<T>> for EnumSet<T> where
    T: EnumSetType

pub fn partial_cmp(&self, other: &EnumSet<T>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more

#[must_use]
fn lt(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests less than (for self and other) and is used by the < operator. Read more

#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

#[must_use]
fn gt(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests greater than (for self and other) and is used by the > operator. Read more

#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

impl<T> Reflectable for EnumSet<T> where
    T: Reflectable + EnumSetType
[src]

pub fn reflect(&self) -> EnumSet<T>[src]

impl<T, O> Sub<O> for EnumSet<T> where
    T: EnumSetType,
    O: Into<EnumSet<T>>, 

type Output = EnumSet<T>

The resulting type after applying the - operator.

pub fn sub(self, other: O) -> <EnumSet<T> as Sub<O>>::Output

Performs the - operation. Read more

impl<T, O> SubAssign<O> for EnumSet<T> where
    T: EnumSetType,
    O: Into<EnumSet<T>>, 

pub fn sub_assign(&mut self, rhs: O)

Performs the -= operation. Read more

impl<'a, T> Sum<&'a EnumSet<T>> for EnumSet<T> where
    T: EnumSetType

pub fn sum<I>(iter: I) -> EnumSet<T> where
    I: Iterator<Item = &'a EnumSet<T>>, 

Method which takes an iterator and generates Self from the elements by “summing up” the items. Read more

impl<'a, T> Sum<&'a T> for EnumSet<T> where
    T: EnumSetType

pub fn sum<I>(iter: I) -> EnumSet<T> where
    I: Iterator<Item = &'a T>, 

Method which takes an iterator and generates Self from the elements by “summing up” the items. Read more

impl<T> Sum<EnumSet<T>> for EnumSet<T> where
    T: EnumSetType

pub fn sum<I>(iter: I) -> EnumSet<T> where
    I: Iterator<Item = EnumSet<T>>, 

Method which takes an iterator and generates Self from the elements by “summing up” the items. Read more

impl<T> Sum<T> for EnumSet<T> where
    T: EnumSetType

pub fn sum<I>(iter: I) -> EnumSet<T> where
    I: Iterator<Item = T>, 

Method which takes an iterator and generates Self from the elements by “summing up” the items. Read more

impl<T> Copy for EnumSet<T> where
    T: Copy + EnumSetType,
    <T as EnumSetTypePrivate>::Repr: Copy

impl<T> Eq for EnumSet<T> where
    T: Eq + EnumSetType,
    <T as EnumSetTypePrivate>::Repr: Eq

impl<T> StructuralEq for EnumSet<T> where
    T: EnumSetType

impl<T> StructuralPartialEq for EnumSet<T> where
    T: EnumSetType

Auto Trait Implementations

impl<T> RefUnwindSafe for EnumSet<T> where
    <T as EnumSetTypePrivate>::Repr: RefUnwindSafe

impl<T> Send for EnumSet<T> where
    <T as EnumSetTypePrivate>::Repr: Send

impl<T> Sync for EnumSet<T> where
    <T as EnumSetTypePrivate>::Repr: Sync

impl<T> Unpin for EnumSet<T> where
    <T as EnumSetTypePrivate>::Repr: Unpin

impl<T> UnwindSafe for EnumSet<T> where
    <T as EnumSetTypePrivate>::Repr: UnwindSafe

Blanket Implementations

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

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

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

pub fn borrow(&self) -> &T

Notable traits for &'_ mut I

impl<'_, I> Iterator for &'_ mut I where
    I: Iterator + ?Sized
type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
    F: Future + Unpin + ?Sized
type Output = <F as Future>::Output;
[src]

Immutably borrows from an owned value. Read more

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

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

Notable traits for &'_ mut I

impl<'_, I> Iterator for &'_ mut I where
    I: Iterator + ?Sized
type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
    F: Future + Unpin + ?Sized
type Output = <F as Future>::Output;
[src]

Mutably borrows from an owned value. Read more

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

pub fn from(t: !) -> T[src]

Performs the conversion.

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

pub fn from(t: T) -> T[src]

Performs the conversion.

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

pub fn into(self) -> U[src]

Performs the conversion.

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

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

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

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

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

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.

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

Performs the conversion.

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.

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

Performs the conversion.