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