Struct enumset::EnumSet [−][src]
#[repr(transparent)]pub struct EnumSet<T: EnumSetType> { /* fields omitted */ }
Expand description
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
Creates an empty EnumSet.
This is an alias for EnumSet::new.
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 })
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 })
Returns true if self has no elements in common with other. This is equivalent to
checking for an empty intersection.
Returns true if the set is a superset of another, i.e., self contains at least all the
values in other.
Returns true if the set is a subset of another, i.e., other contains at least all
the values in self.
Returns a set containing any elements present in either set.
Returns a set containing every element present in both sets.
Returns a set containing element present in self but not in other.
Returns a set containing every element present in either self or other, but is not
present in both.
Returns a set containing all enum variants not in this set.
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.
Removes a value from this set. Returns whether the value was present in the set.
Adds all elements in another set to this one.
Removes all values in another set from this one.
pub fn iter(&self) -> EnumSetIter<T>ⓘNotable traits for EnumSetIter<T>
impl<T: EnumSetType> Iterator for EnumSetIter<T> type Item = T;
pub fn iter(&self) -> EnumSetIter<T>ⓘNotable traits for EnumSetIter<T>
impl<T: EnumSetType> Iterator for EnumSetIter<T> 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.
Returns a u8 representing the elements of this set.
If the underlying bitset will not fit in a u8, this method will panic.
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.
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.
Constructs a bitset from a u8.
If a bit that doesn’t correspond to an enum variant is set, this method will panic.
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.
Constructs a bitset from a u8, ignoring invalid variants.
Returns a u16 representing the elements of this set.
If the underlying bitset will not fit in a u16, this method will panic.
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.
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.
Constructs a bitset from a u16.
If a bit that doesn’t correspond to an enum variant is set, this method will panic.
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.
Constructs a bitset from a u16, ignoring invalid variants.
Returns a u32 representing the elements of this set.
If the underlying bitset will not fit in a u32, this method will panic.
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.
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.
Constructs a bitset from a u32.
If a bit that doesn’t correspond to an enum variant is set, this method will panic.
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.
Constructs a bitset from a u32, ignoring invalid variants.
Returns a u64 representing the elements of this set.
If the underlying bitset will not fit in a u64, this method will panic.
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.
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.
Constructs a bitset from a u64.
If a bit that doesn’t correspond to an enum variant is set, this method will panic.
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.
Constructs a bitset from a u64, ignoring invalid variants.
Returns a u128 representing the elements of this set.
If the underlying bitset will not fit in a u128, this method will panic.
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.
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.
Constructs a bitset from a u128.
If a bit that doesn’t correspond to an enum variant is set, this method will panic.
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.
Constructs a bitset from a u128, ignoring invalid variants.
Returns a usize representing the elements of this set.
If the underlying bitset will not fit in a usize, this method will panic.
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.
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.
Constructs a bitset from a usize.
If a bit that doesn’t correspond to an enum variant is set, this method will panic.
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.
Constructs a bitset from a usize, ignoring invalid variants.
Trait Implementations
Performs the &= operation. Read more
Performs the |= operation. Read more
Performs the ^= operation. Read more
Extends a collection with the contents of an iterator. Read more
extend_one)Extends a collection with exactly one element.
extend_one)Reserves capacity in a collection for the given number of additional elements. Read more
Extends a collection with the contents of an iterator. Read more
extend_one)Extends a collection with exactly one element.
extend_one)Reserves capacity in a collection for the given number of additional elements. Read more
Creates a value from an iterator. Read more
Creates a value from an iterator. Read more
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
Performs the -= operation. Read more