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 a error will occur at compile-time.
This macro accepts trailing |
s to allow easier use in other macros.
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);