date_format.rs
1 use serde::Deserialize; 2 use serde::{Deserializer, Serializer}; 3 use time::macros::format_description; 4 5 const DATE_FORMAT: &[time::format_description::FormatItem<'_>] = 6 format_description!("[year]-[month]-[day]"); 7 8 pub fn serialize<S>(date: &time::Date, serializer: S) -> Result<S::Ok, S::Error> 9 where 10 S: Serializer, 11 { 12 let s = date 13 .format(DATE_FORMAT) 14 .map_err(serde::ser::Error::custom)?; 15 serializer.serialize_str(&s) 16 } 17 18 pub fn deserialize<'de, D>(deserializer: D) -> Result<time::Date, D::Error> 19 where 20 D: Deserializer<'de>, 21 { 22 let s = String::deserialize(deserializer)?; 23 time::Date::parse(&s, DATE_FORMAT).map_err(serde::de::Error::custom) 24 }