use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Eq, PartialEq)]
pub enum SpecialLicenses {
BeerWine,
ClassH,
Entertainment,
Franchise,
Gambling,
Liquor,
Liquor5YearsOrLess,
Liquor5YearsOrMore,
LiquorOffSale,
LiquorOnSale,
None,
Other,
Professional,
OpenEnumeration(String),
}
impl crate::ResoEnumeration for SpecialLicenses {
fn from_str(s: &str) -> SpecialLicenses {
match s {
"Beer/Wine" => SpecialLicenses::BeerWine,
"Class H" => SpecialLicenses::ClassH,
"Entertainment" => SpecialLicenses::Entertainment,
"Franchise" => SpecialLicenses::Franchise,
"Gambling" => SpecialLicenses::Gambling,
"Liquor" => SpecialLicenses::Liquor,
"Liquor 5 Years Or Less" => SpecialLicenses::Liquor5YearsOrLess,
"Liquor 5 Years Or More" => SpecialLicenses::Liquor5YearsOrMore,
"Liquor-Off Sale" => SpecialLicenses::LiquorOffSale,
"Liquor-On Sale" => SpecialLicenses::LiquorOnSale,
"None" => SpecialLicenses::None,
"Other" => SpecialLicenses::Other,
"Professional" => SpecialLicenses::Professional,
_ => SpecialLicenses::OpenEnumeration(s.into()),
}
}
fn from_string(s: String) -> SpecialLicenses {
match s.as_ref() {
"Beer/Wine" => SpecialLicenses::BeerWine,
"Class H" => SpecialLicenses::ClassH,
"Entertainment" => SpecialLicenses::Entertainment,
"Franchise" => SpecialLicenses::Franchise,
"Gambling" => SpecialLicenses::Gambling,
"Liquor" => SpecialLicenses::Liquor,
"Liquor 5 Years Or Less" => SpecialLicenses::Liquor5YearsOrLess,
"Liquor 5 Years Or More" => SpecialLicenses::Liquor5YearsOrMore,
"Liquor-Off Sale" => SpecialLicenses::LiquorOffSale,
"Liquor-On Sale" => SpecialLicenses::LiquorOnSale,
"None" => SpecialLicenses::None,
"Other" => SpecialLicenses::Other,
"Professional" => SpecialLicenses::Professional,
_ => SpecialLicenses::OpenEnumeration(s),
}
}
fn to_str(&self) -> &str {
match self {
SpecialLicenses::BeerWine => "Beer/Wine",
SpecialLicenses::ClassH => "Class H",
SpecialLicenses::Entertainment => "Entertainment",
SpecialLicenses::Franchise => "Franchise",
SpecialLicenses::Gambling => "Gambling",
SpecialLicenses::Liquor => "Liquor",
SpecialLicenses::Liquor5YearsOrLess => "Liquor 5 Years Or Less",
SpecialLicenses::Liquor5YearsOrMore => "Liquor 5 Years Or More",
SpecialLicenses::LiquorOffSale => "Liquor-Off Sale",
SpecialLicenses::LiquorOnSale => "Liquor-On Sale",
SpecialLicenses::None => "None",
SpecialLicenses::Other => "Other",
SpecialLicenses::Professional => "Professional",
SpecialLicenses::OpenEnumeration(ref s) => s,
}
}
fn into_string(self) -> String {
match self {
SpecialLicenses::BeerWine => "Beer/Wine".into(),
SpecialLicenses::ClassH => "Class H".into(),
SpecialLicenses::Entertainment => "Entertainment".into(),
SpecialLicenses::Franchise => "Franchise".into(),
SpecialLicenses::Gambling => "Gambling".into(),
SpecialLicenses::Liquor => "Liquor".into(),
SpecialLicenses::Liquor5YearsOrLess => "Liquor 5 Years Or Less".into(),
SpecialLicenses::Liquor5YearsOrMore => "Liquor 5 Years Or More".into(),
SpecialLicenses::LiquorOffSale => "Liquor-Off Sale".into(),
SpecialLicenses::LiquorOnSale => "Liquor-On Sale".into(),
SpecialLicenses::None => "None".into(),
SpecialLicenses::Other => "Other".into(),
SpecialLicenses::Professional => "Professional".into(),
SpecialLicenses::OpenEnumeration(s) => s,
}
}
fn fallback_value(&self) -> Option<&str> {
match self {
SpecialLicenses::OpenEnumeration(ref s) => Some(s),
_ => None,
}
}
}
impl From<String> for SpecialLicenses {
fn from(s: String) -> SpecialLicenses {
match s.as_ref() {
"Beer/Wine" => SpecialLicenses::BeerWine,
"Class H" => SpecialLicenses::ClassH,
"Entertainment" => SpecialLicenses::Entertainment,
"Franchise" => SpecialLicenses::Franchise,
"Gambling" => SpecialLicenses::Gambling,
"Liquor" => SpecialLicenses::Liquor,
"Liquor 5 Years Or Less" => SpecialLicenses::Liquor5YearsOrLess,
"Liquor 5 Years Or More" => SpecialLicenses::Liquor5YearsOrMore,
"Liquor-Off Sale" => SpecialLicenses::LiquorOffSale,
"Liquor-On Sale" => SpecialLicenses::LiquorOnSale,
"None" => SpecialLicenses::None,
"Other" => SpecialLicenses::Other,
"Professional" => SpecialLicenses::Professional,
_ => SpecialLicenses::OpenEnumeration(s),
}
}
}
impl From<&str> for SpecialLicenses {
fn from(s: &str) -> SpecialLicenses {
match s {
"Beer/Wine" => SpecialLicenses::BeerWine,
"Class H" => SpecialLicenses::ClassH,
"Entertainment" => SpecialLicenses::Entertainment,
"Franchise" => SpecialLicenses::Franchise,
"Gambling" => SpecialLicenses::Gambling,
"Liquor" => SpecialLicenses::Liquor,
"Liquor 5 Years Or Less" => SpecialLicenses::Liquor5YearsOrLess,
"Liquor 5 Years Or More" => SpecialLicenses::Liquor5YearsOrMore,
"Liquor-Off Sale" => SpecialLicenses::LiquorOffSale,
"Liquor-On Sale" => SpecialLicenses::LiquorOnSale,
"None" => SpecialLicenses::None,
"Other" => SpecialLicenses::Other,
"Professional" => SpecialLicenses::Professional,
_ => SpecialLicenses::OpenEnumeration(s.into()),
}
}
}
impl<'a> From<&'a SpecialLicenses> for &'a str {
fn from(s: &'a SpecialLicenses) -> &'a str {
match s {
SpecialLicenses::BeerWine => "Beer/Wine",
SpecialLicenses::ClassH => "Class H",
SpecialLicenses::Entertainment => "Entertainment",
SpecialLicenses::Franchise => "Franchise",
SpecialLicenses::Gambling => "Gambling",
SpecialLicenses::Liquor => "Liquor",
SpecialLicenses::Liquor5YearsOrLess => "Liquor 5 Years Or Less",
SpecialLicenses::Liquor5YearsOrMore => "Liquor 5 Years Or More",
SpecialLicenses::LiquorOffSale => "Liquor-Off Sale",
SpecialLicenses::LiquorOnSale => "Liquor-On Sale",
SpecialLicenses::None => "None",
SpecialLicenses::Other => "Other",
SpecialLicenses::Professional => "Professional",
SpecialLicenses::OpenEnumeration(s) => s,
}
}
}
impl Serialize for SpecialLicenses {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
serializer.serialize_str(self.into())
}
}
impl<'de> Deserialize<'de> for SpecialLicenses {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
Ok(From::from(s))
}
}