pub(crate) mod datetime {
use serde::{Deserializer, Serializer};
pub fn deserialize<'de, D>(deserializer: D) -> Result<time::OffsetDateTime, D::Error>
where
D: Deserializer<'de>,
{
time::serde::rfc3339::deserialize(deserializer)
}
pub fn serialize<S>(input: &time::OffsetDateTime, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
time::serde::rfc3339::serialize(input, serializer)
}
}
pub(crate) mod fluent_uri {
use serde::{de::Error, Deserialize, Deserializer, Serializer};
pub fn deserialize<'de, D>(deserializer: D) -> Result<fluent_uri::UriRef<String>, D::Error>
where
D: Deserializer<'de>,
{
let txt = String::deserialize(deserializer)?;
fluent_uri::UriRef::parse(txt).map_err(D::Error::custom)
}
pub fn serialize<S>(input: &fluent_uri::UriRef<String>, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
serializer.collect_str(input.as_str())
}
}