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