diff options
Diffstat (limited to 'headers/src/header_components/utils/mod.rs')
-rw-r--r-- | headers/src/header_components/utils/mod.rs | 55 |
1 files changed, 22 insertions, 33 deletions
diff --git a/headers/src/header_components/utils/mod.rs b/headers/src/header_components/utils/mod.rs index a54322a..fe5815b 100644 --- a/headers/src/header_components/utils/mod.rs +++ b/headers/src/header_components/utils/mod.rs @@ -1,15 +1,8 @@ - - pub mod text_partition; - -#[cfg(feature="serde")] +#[cfg(feature = "serde")] pub mod serde { - use serde::{ - Serialize, Deserialize, - ser::{Serializer}, - de::{Deserializer} - }; + use serde::{de::Deserializer, ser::Serializer, Deserialize, Serialize}; use chrono::{DateTime, Utc}; @@ -17,22 +10,20 @@ pub mod serde { use super::*; use serde::de::Error; - pub fn serialize<S>(dt: &DateTime<Utc>, serializer: S) - -> Result<S::Ok, S::Error> - where S: Serializer + pub fn serialize<S>(dt: &DateTime<Utc>, serializer: S) -> Result<S::Ok, S::Error> + where + S: Serializer, { serializer.serialize_str(&dt.to_rfc2822()) } - pub fn deserialize<'de, D>(deserializer: D) - -> Result<DateTime<Utc>, D::Error> - where D: Deserializer<'de> + pub fn deserialize<'de, D>(deserializer: D) -> Result<DateTime<Utc>, D::Error> + where + D: Deserializer<'de>, { let as_string = String::deserialize(deserializer)?; let date_time = DateTime::parse_from_rfc2822(&as_string) - .map_err(|e| D::Error::custom(format!( - "invalid rfc2822 date time: {}", e - )))?; + .map_err(|e| D::Error::custom(format!("invalid rfc2822 date time: {}", e)))?; Ok(date_time.with_timezone(&Utc)) } @@ -41,50 +32,48 @@ pub mod serde { pub mod opt_date_time { use super::*; - pub fn serialize<S>( - dt: &Option<DateTime<Utc>>, - serializer: S - ) -> Result<S::Ok, S::Error> - where S: Serializer + pub fn serialize<S>(dt: &Option<DateTime<Utc>>, serializer: S) -> Result<S::Ok, S::Error> + where + S: Serializer, { SerOptDateTime::from(dt).serialize(serializer) } - pub fn deserialize<'de, D>(deserializer: D) - -> Result<Option<DateTime<Utc>>, D::Error> - where D: Deserializer<'de> + pub fn deserialize<'de, D>(deserializer: D) -> Result<Option<DateTime<Utc>>, D::Error> + where + D: Deserializer<'de>, { DeOptDateTime::deserialize(deserializer).map(Into::into) } #[derive(Deserialize)] enum DeOptDateTime { - Some(#[serde(with="super::date_time")] DateTime<Utc>), - None + Some(#[serde(with = "super::date_time")] DateTime<Utc>), + None, } impl Into<Option<DateTime<Utc>>> for DeOptDateTime { fn into(self) -> Option<DateTime<Utc>> { match self { DeOptDateTime::Some(dt) => Some(dt), - DeOptDateTime::None => None + DeOptDateTime::None => None, } } } #[derive(Serialize)] enum SerOptDateTime<'a> { - Some(#[serde(with="super::date_time")] &'a DateTime<Utc>), - None + Some(#[serde(with = "super::date_time")] &'a DateTime<Utc>), + None, } impl<'a> From<&'a Option<DateTime<Utc>>> for SerOptDateTime<'a> { fn from(val: &'a Option<DateTime<Utc>>) -> Self { match val { Some(ref dt) => SerOptDateTime::Some(dt), - None => SerOptDateTime::None + None => SerOptDateTime::None, } } } } -}
\ No newline at end of file +} |