use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Eq, PartialEq)]
pub enum MemberOtherPhoneType {
Direct,
Fax,
First,
Home,
Mobile,
Modem,
Office,
Pager,
Preferred,
Second,
SMS,
Third,
TollFree,
Voicemail,
OpenEnumeration(String),
}
impl crate::ResoEnumeration for MemberOtherPhoneType {
fn from_str(s: &str) -> MemberOtherPhoneType {
match s {
"Direct" => MemberOtherPhoneType::Direct,
"Fax" => MemberOtherPhoneType::Fax,
"First" => MemberOtherPhoneType::First,
"Home" => MemberOtherPhoneType::Home,
"Mobile" => MemberOtherPhoneType::Mobile,
"Modem" => MemberOtherPhoneType::Modem,
"Office" => MemberOtherPhoneType::Office,
"Pager" => MemberOtherPhoneType::Pager,
"Preferred" => MemberOtherPhoneType::Preferred,
"Second" => MemberOtherPhoneType::Second,
"SMS" => MemberOtherPhoneType::SMS,
"Third" => MemberOtherPhoneType::Third,
"Toll Free" => MemberOtherPhoneType::TollFree,
"Voicemail" => MemberOtherPhoneType::Voicemail,
_ => MemberOtherPhoneType::OpenEnumeration(s.into()),
}
}
fn from_string(s: String) -> MemberOtherPhoneType {
match s.as_ref() {
"Direct" => MemberOtherPhoneType::Direct,
"Fax" => MemberOtherPhoneType::Fax,
"First" => MemberOtherPhoneType::First,
"Home" => MemberOtherPhoneType::Home,
"Mobile" => MemberOtherPhoneType::Mobile,
"Modem" => MemberOtherPhoneType::Modem,
"Office" => MemberOtherPhoneType::Office,
"Pager" => MemberOtherPhoneType::Pager,
"Preferred" => MemberOtherPhoneType::Preferred,
"Second" => MemberOtherPhoneType::Second,
"SMS" => MemberOtherPhoneType::SMS,
"Third" => MemberOtherPhoneType::Third,
"Toll Free" => MemberOtherPhoneType::TollFree,
"Voicemail" => MemberOtherPhoneType::Voicemail,
_ => MemberOtherPhoneType::OpenEnumeration(s),
}
}
fn to_str(&self) -> &str {
match self {
MemberOtherPhoneType::Direct => "Direct",
MemberOtherPhoneType::Fax => "Fax",
MemberOtherPhoneType::First => "First",
MemberOtherPhoneType::Home => "Home",
MemberOtherPhoneType::Mobile => "Mobile",
MemberOtherPhoneType::Modem => "Modem",
MemberOtherPhoneType::Office => "Office",
MemberOtherPhoneType::Pager => "Pager",
MemberOtherPhoneType::Preferred => "Preferred",
MemberOtherPhoneType::Second => "Second",
MemberOtherPhoneType::SMS => "SMS",
MemberOtherPhoneType::Third => "Third",
MemberOtherPhoneType::TollFree => "Toll Free",
MemberOtherPhoneType::Voicemail => "Voicemail",
MemberOtherPhoneType::OpenEnumeration(ref s) => s,
}
}
fn into_string(self) -> String {
match self {
MemberOtherPhoneType::Direct => "Direct".into(),
MemberOtherPhoneType::Fax => "Fax".into(),
MemberOtherPhoneType::First => "First".into(),
MemberOtherPhoneType::Home => "Home".into(),
MemberOtherPhoneType::Mobile => "Mobile".into(),
MemberOtherPhoneType::Modem => "Modem".into(),
MemberOtherPhoneType::Office => "Office".into(),
MemberOtherPhoneType::Pager => "Pager".into(),
MemberOtherPhoneType::Preferred => "Preferred".into(),
MemberOtherPhoneType::Second => "Second".into(),
MemberOtherPhoneType::SMS => "SMS".into(),
MemberOtherPhoneType::Third => "Third".into(),
MemberOtherPhoneType::TollFree => "Toll Free".into(),
MemberOtherPhoneType::Voicemail => "Voicemail".into(),
MemberOtherPhoneType::OpenEnumeration(s) => s,
}
}
fn fallback_value(&self) -> Option<&str> {
match self {
MemberOtherPhoneType::OpenEnumeration(ref s) => Some(s),
_ => None,
}
}
}
impl From<String> for MemberOtherPhoneType {
fn from(s: String) -> MemberOtherPhoneType {
match s.as_ref() {
"Direct" => MemberOtherPhoneType::Direct,
"Fax" => MemberOtherPhoneType::Fax,
"First" => MemberOtherPhoneType::First,
"Home" => MemberOtherPhoneType::Home,
"Mobile" => MemberOtherPhoneType::Mobile,
"Modem" => MemberOtherPhoneType::Modem,
"Office" => MemberOtherPhoneType::Office,
"Pager" => MemberOtherPhoneType::Pager,
"Preferred" => MemberOtherPhoneType::Preferred,
"Second" => MemberOtherPhoneType::Second,
"SMS" => MemberOtherPhoneType::SMS,
"Third" => MemberOtherPhoneType::Third,
"Toll Free" => MemberOtherPhoneType::TollFree,
"Voicemail" => MemberOtherPhoneType::Voicemail,
_ => MemberOtherPhoneType::OpenEnumeration(s),
}
}
}
impl From<&str> for MemberOtherPhoneType {
fn from(s: &str) -> MemberOtherPhoneType {
match s {
"Direct" => MemberOtherPhoneType::Direct,
"Fax" => MemberOtherPhoneType::Fax,
"First" => MemberOtherPhoneType::First,
"Home" => MemberOtherPhoneType::Home,
"Mobile" => MemberOtherPhoneType::Mobile,
"Modem" => MemberOtherPhoneType::Modem,
"Office" => MemberOtherPhoneType::Office,
"Pager" => MemberOtherPhoneType::Pager,
"Preferred" => MemberOtherPhoneType::Preferred,
"Second" => MemberOtherPhoneType::Second,
"SMS" => MemberOtherPhoneType::SMS,
"Third" => MemberOtherPhoneType::Third,
"Toll Free" => MemberOtherPhoneType::TollFree,
"Voicemail" => MemberOtherPhoneType::Voicemail,
_ => MemberOtherPhoneType::OpenEnumeration(s.into()),
}
}
}
impl<'a> From<&'a MemberOtherPhoneType> for &'a str {
fn from(s: &'a MemberOtherPhoneType) -> &'a str {
match s {
MemberOtherPhoneType::Direct => "Direct",
MemberOtherPhoneType::Fax => "Fax",
MemberOtherPhoneType::First => "First",
MemberOtherPhoneType::Home => "Home",
MemberOtherPhoneType::Mobile => "Mobile",
MemberOtherPhoneType::Modem => "Modem",
MemberOtherPhoneType::Office => "Office",
MemberOtherPhoneType::Pager => "Pager",
MemberOtherPhoneType::Preferred => "Preferred",
MemberOtherPhoneType::Second => "Second",
MemberOtherPhoneType::SMS => "SMS",
MemberOtherPhoneType::Third => "Third",
MemberOtherPhoneType::TollFree => "Toll Free",
MemberOtherPhoneType::Voicemail => "Voicemail",
MemberOtherPhoneType::OpenEnumeration(s) => s,
}
}
}
impl Serialize for MemberOtherPhoneType {
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 MemberOtherPhoneType {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
Ok(From::from(s))
}
}