macro_rules! define_when {
(
$(#[$enum_meta:meta])*
$vis:vis enum $name:ident {
$(#[$never_meta:meta])* $never:ident,
$(#[$auto_meta:meta])* $auto:ident,
$(#[$always_meta:meta])* $always:ident$(,)?
}
) => { ... };
}Expand description
Macro to define a When enum with exactly three variants:
Never, Auto, Always. Preserves enum and variant metadata.
ยงExample
use cba::define_when;
define_when! {
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Default)]
pub enum When {
#[cfg_attr(feature = "serde", serde(alias = "false", alias = "never"))]
Never,
#[default]
#[cfg_attr(feature = "serde", serde(alias = "auto"))]
Auto,
#[cfg_attr(feature = "serde", serde(alias = "true", alias = "always"))]
Always
}
}