use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Eq, PartialEq)]
pub enum ShowingRequirements {
_24HourNotice,
AppointmentOnly,
CallListingAgent,
CallListingOffice,
CallManager,
CallOwner,
CallTenant,
CombinationLockBox,
DaySleeper,
DoNotShow,
EmailListingAgent,
KeyInOffice,
Lockbox,
NoLockbox,
NoSign,
Occupied,
PetsonPremises,
RestrictedHours,
SecuritySystem,
SeeRemarks,
ShowingService,
TextListingAgent,
ToBeBuilt,
UnderConstruction,
OpenEnumeration(String),
}
impl crate::ResoEnumeration for ShowingRequirements {
fn from_str(s: &str) -> ShowingRequirements {
match s {
"24 Hour Notice" => ShowingRequirements::_24HourNotice,
"Appointment Only" => ShowingRequirements::AppointmentOnly,
"Call Listing Agent" => ShowingRequirements::CallListingAgent,
"Call Listing Office" => ShowingRequirements::CallListingOffice,
"Call Manager" => ShowingRequirements::CallManager,
"Call Owner" => ShowingRequirements::CallOwner,
"Call Tenant" => ShowingRequirements::CallTenant,
"Combination Lock Box" => ShowingRequirements::CombinationLockBox,
"Day Sleeper" => ShowingRequirements::DaySleeper,
"Do Not Show" => ShowingRequirements::DoNotShow,
"Email Listing Agent" => ShowingRequirements::EmailListingAgent,
"Key In Office" => ShowingRequirements::KeyInOffice,
"Lockbox" => ShowingRequirements::Lockbox,
"No Lockbox" => ShowingRequirements::NoLockbox,
"No Sign" => ShowingRequirements::NoSign,
"Occupied" => ShowingRequirements::Occupied,
"Pet(s) on Premises" => ShowingRequirements::PetsonPremises,
"Restricted Hours" => ShowingRequirements::RestrictedHours,
"Security System" => ShowingRequirements::SecuritySystem,
"See Remarks" => ShowingRequirements::SeeRemarks,
"Showing Service" => ShowingRequirements::ShowingService,
"Text Listing Agent" => ShowingRequirements::TextListingAgent,
"To Be Built" => ShowingRequirements::ToBeBuilt,
"Under Construction" => ShowingRequirements::UnderConstruction,
_ => ShowingRequirements::OpenEnumeration(s.into()),
}
}
fn from_string(s: String) -> ShowingRequirements {
match s.as_ref() {
"24 Hour Notice" => ShowingRequirements::_24HourNotice,
"Appointment Only" => ShowingRequirements::AppointmentOnly,
"Call Listing Agent" => ShowingRequirements::CallListingAgent,
"Call Listing Office" => ShowingRequirements::CallListingOffice,
"Call Manager" => ShowingRequirements::CallManager,
"Call Owner" => ShowingRequirements::CallOwner,
"Call Tenant" => ShowingRequirements::CallTenant,
"Combination Lock Box" => ShowingRequirements::CombinationLockBox,
"Day Sleeper" => ShowingRequirements::DaySleeper,
"Do Not Show" => ShowingRequirements::DoNotShow,
"Email Listing Agent" => ShowingRequirements::EmailListingAgent,
"Key In Office" => ShowingRequirements::KeyInOffice,
"Lockbox" => ShowingRequirements::Lockbox,
"No Lockbox" => ShowingRequirements::NoLockbox,
"No Sign" => ShowingRequirements::NoSign,
"Occupied" => ShowingRequirements::Occupied,
"Pet(s) on Premises" => ShowingRequirements::PetsonPremises,
"Restricted Hours" => ShowingRequirements::RestrictedHours,
"Security System" => ShowingRequirements::SecuritySystem,
"See Remarks" => ShowingRequirements::SeeRemarks,
"Showing Service" => ShowingRequirements::ShowingService,
"Text Listing Agent" => ShowingRequirements::TextListingAgent,
"To Be Built" => ShowingRequirements::ToBeBuilt,
"Under Construction" => ShowingRequirements::UnderConstruction,
_ => ShowingRequirements::OpenEnumeration(s),
}
}
fn to_str(&self) -> &str {
match self {
ShowingRequirements::_24HourNotice => "24 Hour Notice",
ShowingRequirements::AppointmentOnly => "Appointment Only",
ShowingRequirements::CallListingAgent => "Call Listing Agent",
ShowingRequirements::CallListingOffice => "Call Listing Office",
ShowingRequirements::CallManager => "Call Manager",
ShowingRequirements::CallOwner => "Call Owner",
ShowingRequirements::CallTenant => "Call Tenant",
ShowingRequirements::CombinationLockBox => "Combination Lock Box",
ShowingRequirements::DaySleeper => "Day Sleeper",
ShowingRequirements::DoNotShow => "Do Not Show",
ShowingRequirements::EmailListingAgent => "Email Listing Agent",
ShowingRequirements::KeyInOffice => "Key In Office",
ShowingRequirements::Lockbox => "Lockbox",
ShowingRequirements::NoLockbox => "No Lockbox",
ShowingRequirements::NoSign => "No Sign",
ShowingRequirements::Occupied => "Occupied",
ShowingRequirements::PetsonPremises => "Pet(s) on Premises",
ShowingRequirements::RestrictedHours => "Restricted Hours",
ShowingRequirements::SecuritySystem => "Security System",
ShowingRequirements::SeeRemarks => "See Remarks",
ShowingRequirements::ShowingService => "Showing Service",
ShowingRequirements::TextListingAgent => "Text Listing Agent",
ShowingRequirements::ToBeBuilt => "To Be Built",
ShowingRequirements::UnderConstruction => "Under Construction",
ShowingRequirements::OpenEnumeration(ref s) => s,
}
}
fn into_string(self) -> String {
match self {
ShowingRequirements::_24HourNotice => "24 Hour Notice".into(),
ShowingRequirements::AppointmentOnly => "Appointment Only".into(),
ShowingRequirements::CallListingAgent => "Call Listing Agent".into(),
ShowingRequirements::CallListingOffice => "Call Listing Office".into(),
ShowingRequirements::CallManager => "Call Manager".into(),
ShowingRequirements::CallOwner => "Call Owner".into(),
ShowingRequirements::CallTenant => "Call Tenant".into(),
ShowingRequirements::CombinationLockBox => "Combination Lock Box".into(),
ShowingRequirements::DaySleeper => "Day Sleeper".into(),
ShowingRequirements::DoNotShow => "Do Not Show".into(),
ShowingRequirements::EmailListingAgent => "Email Listing Agent".into(),
ShowingRequirements::KeyInOffice => "Key In Office".into(),
ShowingRequirements::Lockbox => "Lockbox".into(),
ShowingRequirements::NoLockbox => "No Lockbox".into(),
ShowingRequirements::NoSign => "No Sign".into(),
ShowingRequirements::Occupied => "Occupied".into(),
ShowingRequirements::PetsonPremises => "Pet(s) on Premises".into(),
ShowingRequirements::RestrictedHours => "Restricted Hours".into(),
ShowingRequirements::SecuritySystem => "Security System".into(),
ShowingRequirements::SeeRemarks => "See Remarks".into(),
ShowingRequirements::ShowingService => "Showing Service".into(),
ShowingRequirements::TextListingAgent => "Text Listing Agent".into(),
ShowingRequirements::ToBeBuilt => "To Be Built".into(),
ShowingRequirements::UnderConstruction => "Under Construction".into(),
ShowingRequirements::OpenEnumeration(s) => s,
}
}
fn fallback_value(&self) -> Option<&str> {
match self {
ShowingRequirements::OpenEnumeration(ref s) => Some(s),
_ => None,
}
}
}
impl From<String> for ShowingRequirements {
fn from(s: String) -> ShowingRequirements {
match s.as_ref() {
"24 Hour Notice" => ShowingRequirements::_24HourNotice,
"Appointment Only" => ShowingRequirements::AppointmentOnly,
"Call Listing Agent" => ShowingRequirements::CallListingAgent,
"Call Listing Office" => ShowingRequirements::CallListingOffice,
"Call Manager" => ShowingRequirements::CallManager,
"Call Owner" => ShowingRequirements::CallOwner,
"Call Tenant" => ShowingRequirements::CallTenant,
"Combination Lock Box" => ShowingRequirements::CombinationLockBox,
"Day Sleeper" => ShowingRequirements::DaySleeper,
"Do Not Show" => ShowingRequirements::DoNotShow,
"Email Listing Agent" => ShowingRequirements::EmailListingAgent,
"Key In Office" => ShowingRequirements::KeyInOffice,
"Lockbox" => ShowingRequirements::Lockbox,
"No Lockbox" => ShowingRequirements::NoLockbox,
"No Sign" => ShowingRequirements::NoSign,
"Occupied" => ShowingRequirements::Occupied,
"Pet(s) on Premises" => ShowingRequirements::PetsonPremises,
"Restricted Hours" => ShowingRequirements::RestrictedHours,
"Security System" => ShowingRequirements::SecuritySystem,
"See Remarks" => ShowingRequirements::SeeRemarks,
"Showing Service" => ShowingRequirements::ShowingService,
"Text Listing Agent" => ShowingRequirements::TextListingAgent,
"To Be Built" => ShowingRequirements::ToBeBuilt,
"Under Construction" => ShowingRequirements::UnderConstruction,
_ => ShowingRequirements::OpenEnumeration(s),
}
}
}
impl From<&str> for ShowingRequirements {
fn from(s: &str) -> ShowingRequirements {
match s {
"24 Hour Notice" => ShowingRequirements::_24HourNotice,
"Appointment Only" => ShowingRequirements::AppointmentOnly,
"Call Listing Agent" => ShowingRequirements::CallListingAgent,
"Call Listing Office" => ShowingRequirements::CallListingOffice,
"Call Manager" => ShowingRequirements::CallManager,
"Call Owner" => ShowingRequirements::CallOwner,
"Call Tenant" => ShowingRequirements::CallTenant,
"Combination Lock Box" => ShowingRequirements::CombinationLockBox,
"Day Sleeper" => ShowingRequirements::DaySleeper,
"Do Not Show" => ShowingRequirements::DoNotShow,
"Email Listing Agent" => ShowingRequirements::EmailListingAgent,
"Key In Office" => ShowingRequirements::KeyInOffice,
"Lockbox" => ShowingRequirements::Lockbox,
"No Lockbox" => ShowingRequirements::NoLockbox,
"No Sign" => ShowingRequirements::NoSign,
"Occupied" => ShowingRequirements::Occupied,
"Pet(s) on Premises" => ShowingRequirements::PetsonPremises,
"Restricted Hours" => ShowingRequirements::RestrictedHours,
"Security System" => ShowingRequirements::SecuritySystem,
"See Remarks" => ShowingRequirements::SeeRemarks,
"Showing Service" => ShowingRequirements::ShowingService,
"Text Listing Agent" => ShowingRequirements::TextListingAgent,
"To Be Built" => ShowingRequirements::ToBeBuilt,
"Under Construction" => ShowingRequirements::UnderConstruction,
_ => ShowingRequirements::OpenEnumeration(s.into()),
}
}
}
impl<'a> From<&'a ShowingRequirements> for &'a str {
fn from(s: &'a ShowingRequirements) -> &'a str {
match s {
ShowingRequirements::_24HourNotice => "24 Hour Notice",
ShowingRequirements::AppointmentOnly => "Appointment Only",
ShowingRequirements::CallListingAgent => "Call Listing Agent",
ShowingRequirements::CallListingOffice => "Call Listing Office",
ShowingRequirements::CallManager => "Call Manager",
ShowingRequirements::CallOwner => "Call Owner",
ShowingRequirements::CallTenant => "Call Tenant",
ShowingRequirements::CombinationLockBox => "Combination Lock Box",
ShowingRequirements::DaySleeper => "Day Sleeper",
ShowingRequirements::DoNotShow => "Do Not Show",
ShowingRequirements::EmailListingAgent => "Email Listing Agent",
ShowingRequirements::KeyInOffice => "Key In Office",
ShowingRequirements::Lockbox => "Lockbox",
ShowingRequirements::NoLockbox => "No Lockbox",
ShowingRequirements::NoSign => "No Sign",
ShowingRequirements::Occupied => "Occupied",
ShowingRequirements::PetsonPremises => "Pet(s) on Premises",
ShowingRequirements::RestrictedHours => "Restricted Hours",
ShowingRequirements::SecuritySystem => "Security System",
ShowingRequirements::SeeRemarks => "See Remarks",
ShowingRequirements::ShowingService => "Showing Service",
ShowingRequirements::TextListingAgent => "Text Listing Agent",
ShowingRequirements::ToBeBuilt => "To Be Built",
ShowingRequirements::UnderConstruction => "Under Construction",
ShowingRequirements::OpenEnumeration(s) => s,
}
}
}
impl Serialize for ShowingRequirements {
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 ShowingRequirements {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
Ok(From::from(s))
}
}