enum_set_difference

Macro enum_set_difference 

Source
macro_rules! enum_set_difference {
    ($value:path $(,)?) => { ... };
    ($value:path, $($rest:path),* $(,)?) => { ... };
}
Expand description

Computes the difference of multiple enums or constants enumset at compile time.

The syntax used is enum_set_difference!(ENUM_A, ENUM_B, ENUM_C), computing the equivalent of ENUM_A - ENUM_B - ENUM_C at compile time. Each variant must be of the same type, or an error will occur at compile-time.

§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 the - operator instead.

§Examples

const SET_A: EnumSet<Enum> = enum_set!(Enum::A | Enum::B | Enum::D);
const SET_B: EnumSet<Enum> = enum_set!(Enum::B | Enum::C);
const CONST_SET: EnumSet<Enum> = enum_set_symmetric_difference!(SET_A, SET_B);
assert_eq!(CONST_SET, Enum::A | Enum::C | Enum::D);