use serde::{Deserialize, Serialize};
use std::fmt;
#[derive(Debug, PartialEq, Eq, Clone, Copy, Deserialize, Serialize)]
pub enum WeatherCondition {
Clear = 1,
Fair = 2,
Cloudy = 3,
Overcast = 4,
Fog = 5,
FreezingFog = 6,
LightRain = 7,
Rain = 8,
HeavyRain = 9,
FreezingRain = 10,
HeavyFreezingRain = 11,
Sleet = 12,
HeavySleet = 13,
LightSnowfall = 14,
Snowfall = 15,
HeavySnowfall = 16,
RainShower = 17,
HeavyRainShower = 18,
SleetShower = 19,
HeavySleetShower = 20,
SnowShower = 21,
HeavySnowShower = 22,
Lightning = 23,
Hail = 24,
Thunderstorm = 25,
HeavyThunderstorm = 26,
Storm = 27,
}
impl fmt::Display for WeatherCondition {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{self:?}")
}
}
impl WeatherCondition {
#[must_use]
pub const fn from_i64(value: i64) -> Option<Self> {
match value {
1 => Some(Self::Clear),
2 => Some(Self::Fair),
3 => Some(Self::Cloudy),
4 => Some(Self::Overcast),
5 => Some(Self::Fog),
6 => Some(Self::FreezingFog),
7 => Some(Self::LightRain),
8 => Some(Self::Rain),
9 => Some(Self::HeavyRain),
10 => Some(Self::FreezingRain),
11 => Some(Self::HeavyFreezingRain),
12 => Some(Self::Sleet),
13 => Some(Self::HeavySleet),
14 => Some(Self::LightSnowfall),
15 => Some(Self::Snowfall),
16 => Some(Self::HeavySnowfall),
17 => Some(Self::RainShower),
18 => Some(Self::HeavyRainShower),
19 => Some(Self::SleetShower),
20 => Some(Self::HeavySleetShower),
21 => Some(Self::SnowShower),
22 => Some(Self::HeavySnowShower),
23 => Some(Self::Lightning),
24 => Some(Self::Hail),
25 => Some(Self::Thunderstorm),
26 => Some(Self::HeavyThunderstorm),
27 => Some(Self::Storm),
_ => None, }
}
}