summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2023-10-04 16:37:49 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2023-10-23 17:24:21 +0100
commited6a3c9882fbc43eae9313ab1801610e49af863f (patch)
tree7aeda3587a42e9b581c0b009d6252b1e99c67198
parente95b9dda33b40ce19dbad67a00c209b20bfab206 (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.rs21
1 files 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::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(())
}