use std::convert::TryFrom; #[derive(Debug)] pub enum MonsterParseError { UnknownMonster(String), } #[derive(Debug, Copy, Clone)] pub enum MonsterType { Hildebear, SandRappy, RagRappy, Monest, SavageWolf, BarbarousWolf, Booma, Gobooma, Gigobooma, GrassAssassin, DelLily, PoisonLily, NanoDragon, EvilShark, PalShark, GuilShark, PofuillySlime, PanArms, Hidoom, Migium, Dubchic, Gillchic, Garanz, SinowBeat, SinowGold, Canadine, RingCanadine, Canane, DubchicSwitch, Delsaber, ChaosSorcerer, BeeR, BeeL, DarkGunner, ChaosBringer, DarkBelra, Dimenian, LaDimenian, SoDimenian, Bulclaw, Claw, Dragon, GalGryphon, DeRolLe, DeRolLeBody, DeRolLeMine, VolOptPartA, VolOptPillar, VolOptMonitor, VolOptAmp, VolOptCore, VolOptUnused, VolOpt, DarkFalz, DarkFalz1, DarkFalz2, DarkFalz3, Darvant, UltDarvant, Olga, BarbaRay, GolDragon, SinowBeril, SinowSpigell, Merillias, Meriltas, Mericarol, Merikle, Mericus, UlGibbon, ZolGibbon, Gibbles, Gee, GiGue, Deldepth, Delbiter, Dolmdarl, Dolmolm, Morfos, ReconBox, Epsilon, SinowZoa, SinowZele, IllGill, Astark, SatelliteLizard, Yowie, MerissaA, Girtablulu, Zu, Boota, ZeBoota, BaBoota, Dorphon, Goran, PyroGoran, GoranDetonator, SaintMillion, Shambertin, Mothmant, } impl TryFrom<&str> for MonsterType { type Error = MonsterParseError; fn try_from(monster: &str) -> Result { match monster { "Booma" | "Bartle" => Ok(MonsterType::Booma), "Gobooma" | "Barble" => Ok(MonsterType::Gobooma), "Gigobooma" | "Tollaw" => Ok(MonsterType::Gigobooma), // etc... _ => Err(MonsterParseError::UnknownMonster(monster.to_owned())) } } }