diff --git a/src/datetime.rs b/src/datetime.rs index 0a1fd14..e3c3670 100644 --- a/src/datetime.rs +++ b/src/datetime.rs @@ -520,8 +520,18 @@ mod serde { fn serialize(&self, serializer: S) -> Result where S: ser::Serializer { + struct FormatWrapped<'a, D: 'a> { + inner: &'a D + } + + impl<'a, D: fmt::Debug> fmt::Display for FormatWrapped<'a, D> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + self.inner.fmt(f) + } + } + // Debug formatting is correct RFC3339, and it allows Zulu. - serializer.serialize_str(&format!("{:?}", self)) + serializer.collect_str(&FormatWrapped { inner: &self }) } } diff --git a/src/naive/date.rs b/src/naive/date.rs index 30061c8..79cb3f2 100644 --- a/src/naive/date.rs +++ b/src/naive/date.rs @@ -1570,7 +1570,17 @@ mod serde { fn serialize(&self, serializer: S) -> Result where S: ser::Serializer { - serializer.serialize_str(&format!("{:?}", self)) + struct FormatWrapped<'a, D: 'a> { + inner: &'a D + } + + impl<'a, D: fmt::Debug> fmt::Display for FormatWrapped<'a, D> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + self.inner.fmt(f) + } + } + + serializer.collect_str(&FormatWrapped { inner: &self }) } } diff --git a/src/naive/datetime.rs b/src/naive/datetime.rs index f029ffb..f68210e 100644 --- a/src/naive/datetime.rs +++ b/src/naive/datetime.rs @@ -1468,7 +1468,17 @@ mod serde { fn serialize(&self, serializer: S) -> Result where S: ser::Serializer { - serializer.serialize_str(&format!("{:?}", self)) + struct FormatWrapped<'a, D: 'a> { + inner: &'a D + } + + impl<'a, D: fmt::Debug> fmt::Display for FormatWrapped<'a, D> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + self.inner.fmt(f) + } + } + + serializer.collect_str(&FormatWrapped { inner: &self }) } } diff --git a/src/naive/time.rs b/src/naive/time.rs index 89e56bc..7f0e7d3 100644 --- a/src/naive/time.rs +++ b/src/naive/time.rs @@ -1346,7 +1346,7 @@ mod serde { fn serialize(&self, serializer: S) -> Result where S: ser::Serializer { - serializer.serialize_str(&format!("{:?}", self)) + serializer.collect_str(&self) } }