Struct cursive::reexports::enumset::EnumSet[]

#[repr(transparent)]
pub struct EnumSet<T> where
    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.

Returns an EnumSet containing a single element.

Creates an empty EnumSet.

This is an alias for EnumSet::new.

Returns an EnumSet containing all valid variants of the enum.

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 the number of elements in this set.

Returns true if the set contains no elements.

Removes all elements from the set.

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.

Checks whether this set contains a value.

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.

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

The resulting type after applying the & operator.

Performs the & operation. Read more

Performs the &= operation. Read more

The resulting type after applying the | operator.

Performs the | operation. Read more

Performs the |= operation. Read more

The resulting type after applying the ^ operator.

Performs the ^ operation. Read more

Performs the ^= operation. Read more

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Returns an empty set.

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

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

Extends a collection with exactly one element.

🔬 This is a nightly-only experimental API. (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

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

Extends a collection with exactly one element.

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

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

Performs the conversion.

Creates a value from an iterator. Read more

Creates a value from an iterator. Read more

Feeds this value into the given Hasher. Read more

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

The type of the elements being iterated over.

Which kind of iterator are we turning this into?

Creates an iterator from a value. Read more

The resulting type after applying the ! operator.

Performs the unary ! operation. Read more

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

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

Restrict a value to a certain interval. Read more

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

This method tests for !=.

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

This method tests for !=.

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

This method tests for !=.

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

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

The resulting type after applying the - operator.

Performs the - operation. Read more

Performs the -= operation. Read more

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

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

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

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

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

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

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

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

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Calls the given closure and return the result. Read more

Calls the given closure on self.

Calls the given closure on self.

Calls the given closure if condition == true.