use crate::{Category, Kind};
use core::fmt::{Debug, Display};
pub trait VariantType: Clone + Debug + Display {
type R;
type Category: Category<R = Self::R>;
type Kind: Kind<R = Self::R, Category = Self::Category>;
const CATEGORY: Self::Category;
const KIND: Self::Kind;
const NAME: &'static str;
#[inline]
fn category(&self) -> Self::Category {
Self::CATEGORY
}
#[inline]
fn kind(&self) -> Self::Kind {
Self::KIND
}
#[inline]
fn name(&self) -> &'static str {
Self::NAME
}
}