diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2023-10-04 16:37:49 +0100 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2023-10-23 17:24:21 +0100 |
commit | ed6a3c9882fbc43eae9313ab1801610e49af863f (patch) | |
tree | 7aeda3587a42e9b581c0b009d6252b1e99c67198 | |
parent | e95b9dda33b40ce19dbad67a00c209b20bfab206 (diff) |
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 <ijackson@chiark.greenend.org.uk>
-rw-r--r-- | src/ser.rs | 21 |
1 files changed, 8 insertions, 13 deletions
@@ -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::SerializeTupleVariant> { self.push_key(variant); - Ok(self) + self.serialize_seq(Some(len)) } fn serialize_map(self, _len: Option<usize>) -> Result<Self::SerializeMap> { @@ -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<Self::Ok> { - 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<Self::Ok> { - 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<Self::Ok> { + ser::SerializeSeq::end(&mut *self)?; self.pop_key(); Ok(()) } |