use crate::knowledge::*; #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] pub enum CharacterUnmasked { Assagioli, Bombieri, Cagliostro, Divini, Eustachi, Fracastoro, Grimaldi, Human, } impl From for Noun { fn from(x: CharacterUnmasked) -> Self {Noun::CharacterUnmasked(x)} } impl TryFrom for CharacterUnmasked { type Error = (); fn try_from(v: Noun) -> Result { if let Noun::CharacterUnmasked(x) = v { Ok(x) } else { Err(()) } } } impl DisplayNoun for CharacterUnmasked { fn display_noun(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!(f, "{:?}", self) } } #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] pub enum CharacterMasked { Dragon, Tiger, Rooster, Rabbit, Dog, Horse, Monkey, Ox, Goat, Snake, Rat, Pig, } impl From for Noun { fn from(x: CharacterMasked) -> Self {Noun::CharacterMasked(x)} } impl TryFrom for CharacterMasked { type Error = (); fn try_from(v: Noun) -> Result { if let Noun::CharacterMasked(x) = v { Ok(x) } else { Err(()) } } } impl DisplayNoun for CharacterMasked { fn display_noun(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!(f, "{:?}", self) } }