From fcb74481ee9d24da7c8c5f7938144b2c88864314 Mon Sep 17 00:00:00 2001 From: Kang Seonghoon Date: Tue, 2 May 2017 02:37:54 +0900 Subject: [PATCH] Updated Weekday impls for serde to 1.0. --- src/lib.rs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index a6af13b..d5096b4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -592,10 +592,11 @@ impl fmt::Debug for ParseWeekdayError { #[cfg(feature = "serde")] mod weekday_serde { use super::Weekday; + use std::fmt; use serde::{ser, de}; impl ser::Serialize for Weekday { - fn serialize(&self, serializer: &mut S) -> Result<(), S::Error> + fn serialize(&self, serializer: S) -> Result where S: ser::Serializer { serializer.serialize_str(&format!("{:?}", self)) @@ -604,19 +605,23 @@ mod weekday_serde { struct WeekdayVisitor; - impl de::Visitor for WeekdayVisitor { + impl<'de> de::Visitor<'de> for WeekdayVisitor { type Value = Weekday; - fn visit_str(&mut self, value: &str) -> Result + fn expecting(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "Weekday") + } + + fn visit_str(self, value: &str) -> Result where E: de::Error { - value.parse().map_err(|err| de::Error::custom(err)) + value.parse().map_err(|_| E::custom("short or long weekday names expected")) } } - impl de::Deserialize for Weekday { - fn deserialize(deserializer: &mut D) -> Result - where D: de::Deserializer + impl<'de> de::Deserialize<'de> for Weekday { + fn deserialize(deserializer: D) -> Result + where D: de::Deserializer<'de> { deserializer.deserialize_str(WeekdayVisitor) }