use crate::geocoding::response::plus_code::PlusCode;
use crate::types::{AddressComponent, Geometry, PlaceType};
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct Geocoding {
#[serde(default)]
pub address_components: Vec<AddressComponent>,
pub formatted_address: String,
pub geometry: Geometry,
#[serde(default)]
pub partial_match: Option<bool>,
pub place_id: String,
#[serde(default)]
pub plus_code: Option<PlusCode>,
#[serde(default)]
pub types: Vec<PlaceType>,
}
impl Geocoding {
#[must_use]
pub fn get_global_plus_code(&self) -> Option<String> {
self.plus_code
.as_ref()
.map(|plus_code| plus_code.global_code.clone())
}
#[must_use]
pub fn get_compound_plus_code(&self) -> Option<String> {
self.plus_code.as_ref().and_then(|plus_code| {
plus_code
.compound_code
.as_ref()
.map(std::string::ToString::to_string)
}) } }