twapi_v2/responses/
geo.rs1use 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}