From bbec51dbe6085b4ed38a926e6fd9abc5e1d4ccd5 Mon Sep 17 00:00:00 2001 From: Candifloss Date: Fri, 10 Oct 2025 00:53:15 +0530 Subject: [PATCH] Add module `src/free_api_v25/current/clouds.rs` --- src/free_api_v25/current/clouds.rs | 23 +++++++++++++++++++++++ src/free_api_v25/current/mod.rs | 1 + 2 files changed, 24 insertions(+) create mode 100644 src/free_api_v25/current/clouds.rs diff --git a/src/free_api_v25/current/clouds.rs b/src/free_api_v25/current/clouds.rs new file mode 100644 index 0000000..291f8d2 --- /dev/null +++ b/src/free_api_v25/current/clouds.rs @@ -0,0 +1,23 @@ +use serde::{Deserialize, Serialize}; + +/// Cloud cover information +#[derive(Debug, Clone, Deserialize, Serialize, Default, PartialEq)] +pub struct Clouds { + /// Cloudiness percentage (0-100) + #[serde(default)] + pub all: Option, +} + +impl Clouds { + /// Returns true if cloud cover indicates clear skies (<= 20%) + #[must_use] + pub fn is_clear(&self) -> bool { + self.all.is_some_and(|cover| cover <= 20) + } + + /// Returns true if cloud cover indicates overcast (>= 80%) + #[must_use] + pub fn is_overcast(&self) -> bool { + self.all.is_some_and(|cover| cover >= 80) + } +} diff --git a/src/free_api_v25/current/mod.rs b/src/free_api_v25/current/mod.rs index addf70e..81176ab 100644 --- a/src/free_api_v25/current/mod.rs +++ b/src/free_api_v25/current/mod.rs @@ -17,6 +17,7 @@ //! - [`forecast`](crate::forecast) for multi-day weather data //! - [`query`](crate::query) for building request URLs +pub mod clouds; pub mod coord; pub mod main; pub mod weather;