diff options
Diffstat (limited to '')
-rw-r--r-- | src/serde.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/serde.rs b/src/serde.rs new file mode 100644 index 0000000..9049d64 --- /dev/null +++ b/src/serde.rs @@ -0,0 +1,22 @@ +use chrono::NaiveDateTime; +use serde::{Deserialize, Deserializer}; + + +pub fn naive_read_unixtime<'de, D>(d: D) -> Result<NaiveDateTime, D::Error> +where + D: Deserializer<'de>, +{ + let ts = <i64>::deserialize(d)?; + Ok(NaiveDateTime::from_timestamp(ts, 0)) +} + +pub fn option_naive_read_unixtime<'de, D>(d: D) -> Result<Option<NaiveDateTime>, D::Error> +where + D: Deserializer<'de>, +{ + match <i64>::deserialize(d) { + Ok(ts) => + Ok(Some(NaiveDateTime::from_timestamp(ts, 0))), + Err(_) => Ok(None) + } +} |