use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Eq, PartialEq)]
pub enum LotDimensionsSource {
Appraiser,
Assessor,
Builder,
Estimated,
GISCalculated,
Measured,
Other,
Owner,
PublicRecords,
SeeRemarks,
Survey,
OpenEnumeration(String),
}
impl crate::ResoEnumeration for LotDimensionsSource {
fn from_str(s: &str) -> LotDimensionsSource {
match s {
"Appraiser" => LotDimensionsSource::Appraiser,
"Assessor" => LotDimensionsSource::Assessor,
"Builder" => LotDimensionsSource::Builder,
"Estimated" => LotDimensionsSource::Estimated,
"GIS Calculated" => LotDimensionsSource::GISCalculated,
"Measured" => LotDimensionsSource::Measured,
"Other" => LotDimensionsSource::Other,
"Owner" => LotDimensionsSource::Owner,
"Public Records" => LotDimensionsSource::PublicRecords,
"See Remarks" => LotDimensionsSource::SeeRemarks,
"Survey" => LotDimensionsSource::Survey,
_ => LotDimensionsSource::OpenEnumeration(s.into()),
}
}
fn from_string(s: String) -> LotDimensionsSource {
match s.as_ref() {
"Appraiser" => LotDimensionsSource::Appraiser,
"Assessor" => LotDimensionsSource::Assessor,
"Builder" => LotDimensionsSource::Builder,
"Estimated" => LotDimensionsSource::Estimated,
"GIS Calculated" => LotDimensionsSource::GISCalculated,
"Measured" => LotDimensionsSource::Measured,
"Other" => LotDimensionsSource::Other,
"Owner" => LotDimensionsSource::Owner,
"Public Records" => LotDimensionsSource::PublicRecords,
"See Remarks" => LotDimensionsSource::SeeRemarks,
"Survey" => LotDimensionsSource::Survey,
_ => LotDimensionsSource::OpenEnumeration(s),
}
}
fn to_str(&self) -> &str {
match self {
LotDimensionsSource::Appraiser => "Appraiser",
LotDimensionsSource::Assessor => "Assessor",
LotDimensionsSource::Builder => "Builder",
LotDimensionsSource::Estimated => "Estimated",
LotDimensionsSource::GISCalculated => "GIS Calculated",
LotDimensionsSource::Measured => "Measured",
LotDimensionsSource::Other => "Other",
LotDimensionsSource::Owner => "Owner",
LotDimensionsSource::PublicRecords => "Public Records",
LotDimensionsSource::SeeRemarks => "See Remarks",
LotDimensionsSource::Survey => "Survey",
LotDimensionsSource::OpenEnumeration(ref s) => s,
}
}
fn into_string(self) -> String {
match self {
LotDimensionsSource::Appraiser => "Appraiser".into(),
LotDimensionsSource::Assessor => "Assessor".into(),
LotDimensionsSource::Builder => "Builder".into(),
LotDimensionsSource::Estimated => "Estimated".into(),
LotDimensionsSource::GISCalculated => "GIS Calculated".into(),
LotDimensionsSource::Measured => "Measured".into(),
LotDimensionsSource::Other => "Other".into(),
LotDimensionsSource::Owner => "Owner".into(),
LotDimensionsSource::PublicRecords => "Public Records".into(),
LotDimensionsSource::SeeRemarks => "See Remarks".into(),
LotDimensionsSource::Survey => "Survey".into(),
LotDimensionsSource::OpenEnumeration(s) => s,
}
}
fn fallback_value(&self) -> Option<&str> {
match self {
LotDimensionsSource::OpenEnumeration(ref s) => Some(s),
_ => None,
}
}
}
impl From<String> for LotDimensionsSource {
fn from(s: String) -> LotDimensionsSource {
match s.as_ref() {
"Appraiser" => LotDimensionsSource::Appraiser,
"Assessor" => LotDimensionsSource::Assessor,
"Builder" => LotDimensionsSource::Builder,
"Estimated" => LotDimensionsSource::Estimated,
"GIS Calculated" => LotDimensionsSource::GISCalculated,
"Measured" => LotDimensionsSource::Measured,
"Other" => LotDimensionsSource::Other,
"Owner" => LotDimensionsSource::Owner,
"Public Records" => LotDimensionsSource::PublicRecords,
"See Remarks" => LotDimensionsSource::SeeRemarks,
"Survey" => LotDimensionsSource::Survey,
_ => LotDimensionsSource::OpenEnumeration(s),
}
}
}
impl From<&str> for LotDimensionsSource {
fn from(s: &str) -> LotDimensionsSource {
match s {
"Appraiser" => LotDimensionsSource::Appraiser,
"Assessor" => LotDimensionsSource::Assessor,
"Builder" => LotDimensionsSource::Builder,
"Estimated" => LotDimensionsSource::Estimated,
"GIS Calculated" => LotDimensionsSource::GISCalculated,
"Measured" => LotDimensionsSource::Measured,
"Other" => LotDimensionsSource::Other,
"Owner" => LotDimensionsSource::Owner,
"Public Records" => LotDimensionsSource::PublicRecords,
"See Remarks" => LotDimensionsSource::SeeRemarks,
"Survey" => LotDimensionsSource::Survey,
_ => LotDimensionsSource::OpenEnumeration(s.into()),
}
}
}
impl<'a> From<&'a LotDimensionsSource> for &'a str {
fn from(s: &'a LotDimensionsSource) -> &'a str {
match s {
LotDimensionsSource::Appraiser => "Appraiser",
LotDimensionsSource::Assessor => "Assessor",
LotDimensionsSource::Builder => "Builder",
LotDimensionsSource::Estimated => "Estimated",
LotDimensionsSource::GISCalculated => "GIS Calculated",
LotDimensionsSource::Measured => "Measured",
LotDimensionsSource::Other => "Other",
LotDimensionsSource::Owner => "Owner",
LotDimensionsSource::PublicRecords => "Public Records",
LotDimensionsSource::SeeRemarks => "See Remarks",
LotDimensionsSource::Survey => "Survey",
LotDimensionsSource::OpenEnumeration(s) => s,
}
}
}
impl Serialize for LotDimensionsSource {
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 LotDimensionsSource {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
Ok(From::from(s))
}
}