use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Eq, PartialEq)]
pub enum UnitTypeType {
_1Bedroom,
_2Bedroom,
_3Bedroom,
_4BedroomOrMore,
Apartments,
Efficiency,
Loft,
ManagersUnit,
Penthouse,
Studio,
OpenEnumeration(String),
}
impl crate::ResoEnumeration for UnitTypeType {
fn from_str(s: &str) -> UnitTypeType {
match s {
"1 Bedroom" => UnitTypeType::_1Bedroom,
"2 Bedroom" => UnitTypeType::_2Bedroom,
"3 Bedroom" => UnitTypeType::_3Bedroom,
"4 Bedroom Or More" => UnitTypeType::_4BedroomOrMore,
"Apartments" => UnitTypeType::Apartments,
"Efficiency" => UnitTypeType::Efficiency,
"Loft" => UnitTypeType::Loft,
"Manager's Unit" => UnitTypeType::ManagersUnit,
"Penthouse" => UnitTypeType::Penthouse,
"Studio" => UnitTypeType::Studio,
_ => UnitTypeType::OpenEnumeration(s.into()),
}
}
fn from_string(s: String) -> UnitTypeType {
match s.as_ref() {
"1 Bedroom" => UnitTypeType::_1Bedroom,
"2 Bedroom" => UnitTypeType::_2Bedroom,
"3 Bedroom" => UnitTypeType::_3Bedroom,
"4 Bedroom Or More" => UnitTypeType::_4BedroomOrMore,
"Apartments" => UnitTypeType::Apartments,
"Efficiency" => UnitTypeType::Efficiency,
"Loft" => UnitTypeType::Loft,
"Manager's Unit" => UnitTypeType::ManagersUnit,
"Penthouse" => UnitTypeType::Penthouse,
"Studio" => UnitTypeType::Studio,
_ => UnitTypeType::OpenEnumeration(s),
}
}
fn to_str(&self) -> &str {
match self {
UnitTypeType::_1Bedroom => "1 Bedroom",
UnitTypeType::_2Bedroom => "2 Bedroom",
UnitTypeType::_3Bedroom => "3 Bedroom",
UnitTypeType::_4BedroomOrMore => "4 Bedroom Or More",
UnitTypeType::Apartments => "Apartments",
UnitTypeType::Efficiency => "Efficiency",
UnitTypeType::Loft => "Loft",
UnitTypeType::ManagersUnit => "Manager's Unit",
UnitTypeType::Penthouse => "Penthouse",
UnitTypeType::Studio => "Studio",
UnitTypeType::OpenEnumeration(ref s) => s,
}
}
fn into_string(self) -> String {
match self {
UnitTypeType::_1Bedroom => "1 Bedroom".into(),
UnitTypeType::_2Bedroom => "2 Bedroom".into(),
UnitTypeType::_3Bedroom => "3 Bedroom".into(),
UnitTypeType::_4BedroomOrMore => "4 Bedroom Or More".into(),
UnitTypeType::Apartments => "Apartments".into(),
UnitTypeType::Efficiency => "Efficiency".into(),
UnitTypeType::Loft => "Loft".into(),
UnitTypeType::ManagersUnit => "Manager's Unit".into(),
UnitTypeType::Penthouse => "Penthouse".into(),
UnitTypeType::Studio => "Studio".into(),
UnitTypeType::OpenEnumeration(s) => s,
}
}
fn fallback_value(&self) -> Option<&str> {
match self {
UnitTypeType::OpenEnumeration(ref s) => Some(s),
_ => None,
}
}
}
impl From<String> for UnitTypeType {
fn from(s: String) -> UnitTypeType {
match s.as_ref() {
"1 Bedroom" => UnitTypeType::_1Bedroom,
"2 Bedroom" => UnitTypeType::_2Bedroom,
"3 Bedroom" => UnitTypeType::_3Bedroom,
"4 Bedroom Or More" => UnitTypeType::_4BedroomOrMore,
"Apartments" => UnitTypeType::Apartments,
"Efficiency" => UnitTypeType::Efficiency,
"Loft" => UnitTypeType::Loft,
"Manager's Unit" => UnitTypeType::ManagersUnit,
"Penthouse" => UnitTypeType::Penthouse,
"Studio" => UnitTypeType::Studio,
_ => UnitTypeType::OpenEnumeration(s),
}
}
}
impl From<&str> for UnitTypeType {
fn from(s: &str) -> UnitTypeType {
match s {
"1 Bedroom" => UnitTypeType::_1Bedroom,
"2 Bedroom" => UnitTypeType::_2Bedroom,
"3 Bedroom" => UnitTypeType::_3Bedroom,
"4 Bedroom Or More" => UnitTypeType::_4BedroomOrMore,
"Apartments" => UnitTypeType::Apartments,
"Efficiency" => UnitTypeType::Efficiency,
"Loft" => UnitTypeType::Loft,
"Manager's Unit" => UnitTypeType::ManagersUnit,
"Penthouse" => UnitTypeType::Penthouse,
"Studio" => UnitTypeType::Studio,
_ => UnitTypeType::OpenEnumeration(s.into()),
}
}
}
impl<'a> From<&'a UnitTypeType> for &'a str {
fn from(s: &'a UnitTypeType) -> &'a str {
match s {
UnitTypeType::_1Bedroom => "1 Bedroom",
UnitTypeType::_2Bedroom => "2 Bedroom",
UnitTypeType::_3Bedroom => "3 Bedroom",
UnitTypeType::_4BedroomOrMore => "4 Bedroom Or More",
UnitTypeType::Apartments => "Apartments",
UnitTypeType::Efficiency => "Efficiency",
UnitTypeType::Loft => "Loft",
UnitTypeType::ManagersUnit => "Manager's Unit",
UnitTypeType::Penthouse => "Penthouse",
UnitTypeType::Studio => "Studio",
UnitTypeType::OpenEnumeration(s) => s,
}
}
}
impl Serialize for UnitTypeType {
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 UnitTypeType {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
Ok(From::from(s))
}
}