From 55a7f5c35281feb75f27778200f2a8bca01680b3 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Tue, 11 Jul 2023 15:53:48 -0700 Subject: [PATCH] Inline Serializer::serialize_seq into serialize_bytes --- src/ser.rs | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/ser.rs b/src/ser.rs index e15db92bf..62f5c4f01 100644 --- a/src/ser.rs +++ b/src/ser.rs @@ -187,10 +187,27 @@ where format_escaped_str(&mut self.writer, &mut self.formatter, value).map_err(Error::io) } - #[inline] fn serialize_bytes(self, value: &[u8]) -> Result<()> { use serde::ser::SerializeSeq; - let mut seq = tri!(self.serialize_seq(Some(value.len()))); + tri!(self + .formatter + .begin_array(&mut self.writer) + .map_err(Error::io)); + let mut seq = if value.is_empty() { + tri!(self + .formatter + .end_array(&mut self.writer) + .map_err(Error::io)); + Compound::Map { + ser: self, + state: State::Empty, + } + } else { + Compound::Map { + ser: self, + state: State::First, + } + }; for byte in value { tri!(seq.serialize_element(byte)); }