Skip to main content

twapi_v2/responses/
geo.rs

1use crate::responses::coordinates::Coordinates;
2use serde::{Deserialize, Serialize};
3
4#[derive(Serialize, Deserialize, Debug, Clone, Default, PartialEq)]
5pub struct Geo {
6    #[serde(skip_serializing_if = "Option::is_none")]
7    pub r#type: Option<String>,
8    #[serde(skip_serializing_if = "Option::is_none")]
9    pub bbox: Option<Vec<f64>>,
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub contained_within: Option<Vec<String>>,
12    #[serde(skip_serializing_if = "Option::is_none")]
13    pub coordinates: Option<Coordinates>,
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub place_id: Option<String>,
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub properties: Option<serde_json::Value>,
18    #[serde(flatten)]
19    pub extra: std::collections::HashMap<String, serde_json::Value>,
20}
21
22impl Geo {
23    pub fn is_empty_extra(&self) -> bool {
24        let res = self.extra.is_empty()
25            && self
26                .coordinates
27                .as_ref()
28                .map(|it| it.is_empty_extra())
29                .unwrap_or(true);
30        if !res {
31            println!("Geo {:?}", self.extra);
32        }
33        res
34    }
35}