From ed6a3c9882fbc43eae9313ab1801610e49af863f Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Wed, 4 Oct 2023 16:37:49 +0100 Subject: ser: sequences: Centralise Have all the various versions of sequences (arrays and various forms of tuple) all go via ser::SerializeSeq. This reduces some duplication. And, we're about to change the implementation. Signed-off-by: Ian Jackson --- src/ser.rs | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/src/ser.rs b/src/ser.rs index 2d09e1c..f8e6084 100644 --- a/src/ser.rs +++ b/src/ser.rs @@ -234,10 +234,10 @@ impl<'a> ser::Serializer for &'a mut ConfigSerializer { _name: &'static str, _variant_index: u32, variant: &'static str, - _len: usize, + len: usize, ) -> Result { self.push_key(variant); - Ok(self) + self.serialize_seq(Some(len)) } fn serialize_map(self, _len: Option) -> Result { @@ -286,13 +286,11 @@ impl<'a> ser::SerializeTuple for &'a mut ConfigSerializer { where T: ?Sized + ser::Serialize, { - self.inc_last_key_index()?; - value.serialize(&mut **self)?; - Ok(()) + ser::SerializeSeq::serialize_element(self, value) } fn end(self) -> Result { - Ok(()) + ser::SerializeSeq::end(self) } } @@ -304,13 +302,11 @@ impl<'a> ser::SerializeTupleStruct for &'a mut ConfigSerializer { where T: ?Sized + ser::Serialize, { - self.inc_last_key_index()?; - value.serialize(&mut **self)?; - Ok(()) + ser::SerializeSeq::serialize_element(self, value) } fn end(self) -> Result { - Ok(()) + ser::SerializeSeq::end(self) } } @@ -322,12 +318,11 @@ impl<'a> ser::SerializeTupleVariant for &'a mut ConfigSerializer { where T: ?Sized + ser::Serialize, { - self.inc_last_key_index()?; - value.serialize(&mut **self)?; - Ok(()) + ser::SerializeSeq::serialize_element(self, value) } fn end(self) -> Result { + ser::SerializeSeq::end(&mut *self)?; self.pop_key(); Ok(()) } -- cgit v1.2.3