ext_time/
extend_serde.rs

1use serde::{de, Deserialize, Deserializer, Serializer};
2use time::OffsetDateTime;
3
4/// serde serialize OffsetDateTime to Timestamp
5///
6/// `#[serde(serialize_with = "serde_t2ts"]`
7pub fn serde_t2ts<S>(x: &OffsetDateTime, s: S) -> Result<S::Ok, S::Error>
8where
9    S: Serializer,
10{
11    s.serialize_i64(x.unix_timestamp())
12}
13
14/// serde deserialize Timestamp to OffsetDateTime
15///
16/// `#serde[(deserialize_with = "serde_parse_ts")]`
17pub fn serde_parse_ts<'de, D>(deserializer: D) -> Result<OffsetDateTime, D::Error>
18where
19    D: Deserializer<'de>,
20{
21    let t: i64 = Deserialize::deserialize(deserializer)?;
22    OffsetDateTime::from_unix_timestamp(t).map_err(de::Error::custom)
23}