Skip to main content

define_when

Macro define_when 

Source
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
  }
}