owm_rs/owm/weather/
structures.rs

1use crate::owm::geocoding::structures::CoordinatesValues;
2use serde::Deserialize;
3
4#[derive(Deserialize, Debug)]
5pub struct WeatherData {
6    pub coord: CoordinatesValues,
7    pub weather: Vec<WeatherNode>,
8    pub base: String,
9    pub main: WeatherMainNode,
10    pub visibility: i32,
11    pub wind: WeatherWindNode,
12    #[serde(default)]
13    pub rain: WeatherRainNode,
14    pub clouds: WeatherCloudNode,
15    pub dt: i32,
16    pub sys: WeatherSystemNode,
17    pub timezone: i32,
18    pub id: i32,
19    pub name: String,
20    pub cod: i32,
21}
22
23#[derive(Deserialize, Debug)]
24pub struct WeatherNode {
25    pub id: u32,
26    pub main: String,
27    pub description: String,
28    pub icon: String,
29}
30
31#[derive(Deserialize, Debug)]
32pub struct WeatherMainNode {
33    pub temp: f32,
34    pub feels_like: f32,
35    pub temp_min: f32,
36    pub temp_max: f32,
37    pub pressure: i32,
38    pub humidity: i32,
39    #[serde(default)]
40    pub sea_level: i32,
41    #[serde(default)]
42    pub grnd_level: i32,
43}
44
45#[derive(Deserialize, Debug)]
46pub struct WeatherWindNode {
47    pub speed: f32,
48    pub deg: i32,
49    #[serde(default)]
50    pub gust: f32,
51}
52
53#[derive(Deserialize, Debug, Default)]
54pub struct WeatherRainNode {
55    #[serde(rename = "1h")]
56    pub one_hour: f32,
57}
58
59#[derive(Deserialize, Debug)]
60pub struct WeatherCloudNode {
61    pub all: i32,
62}
63
64#[derive(Deserialize, Debug)]
65pub struct WeatherSystemNode {
66    #[serde(rename = "type")]
67    pub sys_type: i32,
68    pub id: i32,
69    pub country: String,
70    pub sunrise: i32,
71    pub sunset: i32,
72}