change serialization of date to match specs

This commit is contained in:
CodeSteak 2019-05-08 15:03:18 +02:00
parent d9d4f16c01
commit 0090628452
1 changed files with 9 additions and 12 deletions

View File

@ -1,4 +1,3 @@
use serde::de::Error;
use serde::Serialize;
use serde::{Deserialize, Deserializer, Serializer};
use std::str::FromStr;
@ -66,10 +65,9 @@ impl Serialize for Date {
where
S: Serializer,
{
serializer.serialize_str(&format!(
"{:04}-{:02}-{:02}",
self.year, self.month, self.day
))
let data = (self.year, self.month, self.day);
data.serialize(serializer)
}
}
@ -78,14 +76,13 @@ impl<'de> Deserialize<'de> for Date {
where
D: Deserializer<'de>,
{
let data = String::deserialize(deserializer)?;
let data = <(u16, u8, u8)>::deserialize(deserializer)?;
match Date::from_str(&data) {
Ok(date) => Ok(date),
Err(_) => Err(D::Error::custom(
"Expected a String in this format: YYYY-MM-DD.",
)),
}
Ok(Date {
year: data.0,
month: data.1,
day: data.2,
})
}
}