diff --git a/src/raw.rs b/src/raw.rs index b4a4ef8df..c8377ac82 100644 --- a/src/raw.rs +++ b/src/raw.rs @@ -449,9 +449,10 @@ impl<'de> Visitor<'de> for BoxedFromString { where E: de::Error, { - self.visit_string(s.to_owned()) + Ok(RawValue::from_owned(s.to_owned().into_boxed_str())) } + #[cfg(any(feature = "std", feature = "alloc"))] fn visit_string(self, s: String) -> Result where E: de::Error, diff --git a/src/ser.rs b/src/ser.rs index b497c56c8..db77cd883 100644 --- a/src/ser.rs +++ b/src/ser.rs @@ -1548,6 +1548,13 @@ impl<'a, W: io::Write, F: Formatter> ser::Serializer for RawValueStrEmitter<'a, ) -> Result { Err(ser::Error::custom("expected RawValue")) } + + fn collect_str(self, value: &T) -> Result + where + T: ?Sized + Display, + { + self.serialize_str(&value.to_string()) + } } /// Represents a character escape code in a type-safe manner. diff --git a/src/value/ser.rs b/src/value/ser.rs index 5f59c6373..179380a51 100644 --- a/src/value/ser.rs +++ b/src/value/ser.rs @@ -1020,4 +1020,11 @@ impl serde::ser::Serializer for RawValueEmitter { ) -> Result { Err(invalid_raw_value()) } + + fn collect_str(self, value: &T) -> Result + where + T: ?Sized + Display, + { + self.serialize_str(&value.to_string()) + } }