use super::EnumStr;
use enum_map::Enum;
use serde::{Deserialize, Serialize};
#[derive(Enum, PartialEq, Eq, Clone, Copy, Hash, Serialize, Deserialize, Debug)]
pub enum NaturalWonder {
GreatBarrierReef,
OldFaithful,
ElDorado,
FountainOfYouth,
GrandMesa,
MountFuji,
Krakatoa,
RockOfGibraltar,
CerroDePotosi,
BarringerCrater,
MountKailash,
MountSinai,
SriPada,
Uluru,
KingSolomonsMines,
LakeVictoria,
MountKilimanjaro,
}
impl EnumStr for NaturalWonder {
fn as_str(&self) -> &'static str {
match self {
NaturalWonder::GreatBarrierReef => "Great Barrier Reef",
NaturalWonder::OldFaithful => "Old Faithful",
NaturalWonder::ElDorado => "El Dorado",
NaturalWonder::FountainOfYouth => "Fountain of Youth",
NaturalWonder::GrandMesa => "Grand Mesa",
NaturalWonder::MountFuji => "Mount Fuji",
NaturalWonder::Krakatoa => "Krakatoa",
NaturalWonder::RockOfGibraltar => "Rock of Gibraltar",
NaturalWonder::CerroDePotosi => "Cerro de Potosi",
NaturalWonder::BarringerCrater => "Barringer Crater",
NaturalWonder::MountKailash => "Mount Kailash",
NaturalWonder::MountSinai => "Mount Sinai",
NaturalWonder::SriPada => "Sri Pada",
NaturalWonder::Uluru => "Uluru",
NaturalWonder::KingSolomonsMines => "King Solomon's Mines",
NaturalWonder::LakeVictoria => "Lake Victoria",
NaturalWonder::MountKilimanjaro => "Mount Kilimanjaro",
}
}
fn from_str(s: &str) -> Self {
match s {
"Great Barrier Reef" => NaturalWonder::GreatBarrierReef,
"Old Faithful" => NaturalWonder::OldFaithful,
"El Dorado" => NaturalWonder::ElDorado,
"Fountain of Youth" => NaturalWonder::FountainOfYouth,
"Grand Mesa" => NaturalWonder::GrandMesa,
"Mount Fuji" => NaturalWonder::MountFuji,
"Krakatoa" => NaturalWonder::Krakatoa,
"Rock of Gibraltar" => NaturalWonder::RockOfGibraltar,
"Cerro de Potosi" => NaturalWonder::CerroDePotosi,
"Barringer Crater" => NaturalWonder::BarringerCrater,
"Mount Kailash" => NaturalWonder::MountKailash,
"Mount Sinai" => NaturalWonder::MountSinai,
"Sri Pada" => NaturalWonder::SriPada,
"Uluru" => NaturalWonder::Uluru,
"King Solomon's Mines" => NaturalWonder::KingSolomonsMines,
"Lake Victoria" => NaturalWonder::LakeVictoria,
"Mount Kilimanjaro" => NaturalWonder::MountKilimanjaro,
_ => panic!("Invalid value for {}: {{}}", s),
}
}
}