pub mod option_offset_date_time_rfc3339_fixed_width {
#![allow(clippy::type_complexity)]
use azure_core::time::{parse_rfc3339, OffsetDateTime};
use serde::{Deserialize, Deserializer, Serialize, Serializer};
use std::{num::NonZero, result::Result};
use time::format_description::well_known::{iso8601, Iso8601};
pub fn deserialize<'de, D>(deserializer: D) -> Result<Option<OffsetDateTime>, D::Error>
where
D: Deserializer<'de>,
{
let to_deserialize = <Option<String>>::deserialize(deserializer)?;
match to_deserialize {
Some(to_deserialize) => {
let decoded0 = parse_rfc3339(&to_deserialize).map_err(serde::de::Error::custom)?;
Ok(Some(decoded0))
}
None => Ok(None),
}
}
pub fn serialize<S>(
to_serialize: &Option<OffsetDateTime>,
serializer: S,
) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
let format = Iso8601::<
{
iso8601::Config::DEFAULT
.set_time_precision(iso8601::TimePrecision::Second {
decimal_digits: NonZero::new(7),
})
.encode()
},
>;
if let Some(to_serialize) = to_serialize {
let encoded0 = to_serialize
.format(&format)
.map_err(serde::ser::Error::custom)?;
<Option<String>>::serialize(&Some(encoded0), serializer)
} else {
serializer.serialize_none()
}
}
}