mddd_traits/
enums.rs

1#[derive(Debug, PartialEq, Eq)]
2pub struct InvalidEnumValue<Val> {
3    pub typename: &'static str,
4    pub value: Val,
5}
6
7pub trait IStrEnum: Sized {
8    fn variants() -> &'static [Self];
9    fn val_to_str(&self) -> &'static str;
10    fn str_to_val(src: &str) -> Result<Self, InvalidEnumValue<String>>;
11}
12
13pub trait IIntEnum: Sized {
14    fn variants() -> &'static [Self];
15    fn val_to_int(&self) -> isize;
16    fn int_to_val(src: isize) -> Result<Self, InvalidEnumValue<isize>>;
17}