use super::EnumStr;
use enum_map::Enum;
use serde::{Deserialize, Serialize};
#[derive(Enum, PartialEq, Eq, Clone, Copy, Hash, Serialize, Deserialize, Debug)]
pub enum Religion {
Buddhism,
Christianity,
Confucianism,
Hinduism,
Islam,
Judaism,
Shinto,
Sikhism,
Taoism,
Tengriism,
Zoroastrianism,
}
impl EnumStr for Religion {
fn as_str(&self) -> &'static str {
match self {
Religion::Buddhism => "Buddhism",
Religion::Christianity => "Christianity",
Religion::Confucianism => "Confucianism",
Religion::Hinduism => "Hinduism",
Religion::Islam => "Islam",
Religion::Judaism => "Judaism",
Religion::Shinto => "Shinto",
Religion::Sikhism => "Sikhism",
Religion::Taoism => "Taoism",
Religion::Tengriism => "Tengriism",
Religion::Zoroastrianism => "Zoroastrianism",
}
}
fn from_str(s: &str) -> Self {
match s {
"Buddhism" => Religion::Buddhism,
"Christianity" => Religion::Christianity,
"Confucianism" => Religion::Confucianism,
"Hinduism" => Religion::Hinduism,
"Islam" => Religion::Islam,
"Judaism" => Religion::Judaism,
"Shinto" => Religion::Shinto,
"Sikhism" => Religion::Sikhism,
"Taoism" => Religion::Taoism,
"Tengriism" => Religion::Tengriism,
"Zoroastrianism" => Religion::Zoroastrianism,
_ => panic!("Invalid value for {}: {{}}", s),
}
}
}