[go: up one dir, main page]

enum_set

Macro enum_set 

Source
macro_rules! enum_set {
    ($(|)*) => { ... };
    ($value:path $(|)*) => { ... };
    ($value:path | $($rest:path)|* $(|)*) => { ... };
}
Expand description

Creates a EnumSet literal, which can be used in const contexts.

The syntax used is enum_set!(Type::A | Type::B | Type::C). Each variant must be of the same type, or an error will occur at compile-time.

This macro accepts trailing |s to allow easier use in other macros.

§Performance

This macro is designed for use in const contexts, not for execution as normal code. It may be significantly slower than normal code outside const contexts.

In normal code, directly use Type::A | Type::B | Type::C instead.

§Examples

const CONST_SET: EnumSet<Enum> = enum_set!(Enum::A | Enum::B);
assert_eq!(CONST_SET, Enum::A | Enum::B);

This macro is strongly typed. For example, the following will not compile:

let type_error = enum_set!(Enum::A | Enum2::B);