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}