macro_rules! derive_styles {
($EnumName:ident => $(($variant:tt, $lit:literal),)+) => {
#[derive(Debug,Eq,PartialEq,Clone,Hash)]
#[non_exhaustive]
pub enum $EnumName {
$($variant,)+
InvalidStyle,
}
impl From<&str> for $EnumName {
fn from(value: &str) -> Self {
match value {
$($lit => $EnumName::$variant,)+
_ => $EnumName::InvalidStyle,
}
}
}
impl std::fmt::Display for $EnumName {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
$($EnumName::$variant => write!(f, $lit),)+
$EnumName::InvalidStyle => write!(f, "InvalidStyle"),
}
}
}
impl Default for $EnumName {
fn default() -> Self {
$EnumName::InvalidStyle
}
}
};
}
pub(crate) use derive_styles;