use crate::Country;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize, Deserialize)]
pub enum Component {
Country(Country),
PostalCode(String),
AdministrativeArea(String),
Locality(String),
Route(String),
}
impl std::convert::From<&Self> for Component {
fn from(component: &Self) -> Self {
component.clone()
} }
impl std::convert::From<&Component> for String {
fn from(component: &Component) -> Self {
match component {
Component::AdministrativeArea(administrative_area) => {
format!("administrative_area:{administrative_area}")
}
Component::Country(country) => format!("country:{}", Self::from(country)),
Component::PostalCode(postal_code) => format!("postal_code:{postal_code}"),
Component::Locality(locality) => format!("locality:{locality}"),
Component::Route(route) => format!("route:{route}"),
} } }
impl std::default::Default for Component {
fn default() -> Self {
Self::Country(Country::UnitedStates)
} }