use super::EnumStr;
use enum_map::Enum;
use serde::{Deserialize, Serialize};
#[derive(Enum, PartialEq, Eq, Clone, Copy, Hash, Serialize, Deserialize, Debug)]
pub enum Era {
AncientEra,
ClassicalEra,
MedievalEra,
RenaissanceEra,
IndustrialEra,
ModernEra,
AtomicEra,
InformationEra,
FutureEra,
}
impl EnumStr for Era {
fn as_str(&self) -> &'static str {
match self {
Era::AncientEra => "Ancient era",
Era::ClassicalEra => "Classical era",
Era::MedievalEra => "Medieval era",
Era::RenaissanceEra => "Renaissance era",
Era::IndustrialEra => "Industrial era",
Era::ModernEra => "Modern era",
Era::AtomicEra => "Atomic era",
Era::InformationEra => "Information era",
Era::FutureEra => "Future era",
}
}
fn from_str(s: &str) -> Self {
match s {
"Ancient era" => Era::AncientEra,
"Classical era" => Era::ClassicalEra,
"Medieval era" => Era::MedievalEra,
"Renaissance era" => Era::RenaissanceEra,
"Industrial era" => Era::IndustrialEra,
"Modern era" => Era::ModernEra,
"Atomic era" => Era::AtomicEra,
"Information era" => Era::InformationEra,
"Future era" => Era::FutureEra,
_ => panic!("Invalid value for {}: {{}}", s),
}
}
}