#![feature(generic_const_exprs)]
pub trait VariantCount {
const VARIANT_COUNT: usize;
}
pub trait VariantList where
Self: VariantCount,
[(); Self::VARIANT_COUNT]:,
{
fn variant_index (&self) -> usize;
const VARIANTS: [&'static str; Self::VARIANT_COUNT];
fn variant_name (&self) -> String {
Self::VARIANTS[self.variant_index()].to_string()
}
}