#![doc = include_str!("../README.md")]
#[cfg(test)]
mod tests;
#[macro_export]
macro_rules! value_enum {
(
$(#[$outer_attr:meta])*
$vis:vis enum $name:ident : $ty:ty {
$(
$(#[$variant_attr:meta])*
$variant:ident = $data:expr
),*
$(,)?
}
) => (
$(#[$outer_attr])*
#[doc = ::std::stringify!($ty)]
$vis enum $name {
$(
$(#[$variant_attr])*
#[doc = ::std::stringify!($data)]
$variant,
)*
}
impl $name {
#[allow(non_upper_case_globals)]
#[doc = ::std::concat!("[`Variants`](", ::std::stringify!($name), "#variants)")]
$vis const fn value(&self) -> $ty {
$(
const $variant: $ty = $data;
)*
match self {
$(
$name::$variant => $variant,
)*
}
}
}
impl ::std::convert::From<$name> for $ty {
#[inline]
fn from(v: $name) -> $ty {
v.value()
}
}
)
}