macro_rules! impl_FlagEvent {
{ $ty:ident } => { ... };
}
Expand description
Implements FlagEvent
for a C-like enum
Requiremets:
-
$ty
must implement [strum::EnumCount
] [strum::IntoEnumIterator
] -
$ty
type must implementInto<u16>
andTryFrom<u16>
(for example using thenum_enum
crate). -
The discriminants must be densely allocated. This will be done automatically by the compiler if explicit discriminants are not specified. (This property is checked in a test.)
-
The variants may not contain any data. This is required for correctness. We think it is checked if you use
num_enum::TryFromPrimitive
.
§Example
ⓘ
use num_enum::{IntoPrimitive, TryFromPrimitive};
use strum::{EnumCount, EnumIter};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[derive(EnumIter, EnumCount, IntoPrimitive, TryFromPrimitive)]
#[non_exhaustive]
#[repr(u16)]
pub enum DirEvent {
NewConsensus,
NewDescriptors,
}
impl_FlagEvent!{ DirEvent }