From 141157116444ecb6226b95a01dd3f1d6ab0ddb58 Mon Sep 17 00:00:00 2001 From: Michal Nazarewicz Date: Thu, 3 Aug 2023 17:49:26 +0200 Subject: [PATCH] =?UTF-8?q?ser:=20don=E2=80=99t=20unnecessarily=20allocate?= =?UTF-8?q?=20a=20String=20when=20serialising=20a=20character?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use on-stack buffer to encode a character rather than allocating a new String. It’s faster and more memory-efficient. --- src/ser/map.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ser/map.rs b/src/ser/map.rs index c82c2ee3..be69edf5 100644 --- a/src/ser/map.rs +++ b/src/ser/map.rs @@ -166,7 +166,8 @@ impl<'a> ser::Serializer for MapKeySerializer<'a> { } fn serialize_char(self, value: char) -> Result<()> { - self.ser.serialize_str(&value.to_string()) + let mut buf = [0u8; 4]; + self.ser.serialize_str(value.encode_utf8(&mut buf)) } fn serialize_bytes(self, _value: &[u8]) -> Result<()> {