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-11-07 11:19:29 +0000
commit319a9e2c1deff945f0eb5318856b84c5e3c1b819 (patch)
tree8ba95e72c201461b5f2ea3f47e59781242ef2e75
parent2ded3480894a82a93d6e4d46c73676b50b76ff24 (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> (cherry picked from commit ed6a3c9882fbc43eae9313ab1801610e49af863f) 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 9ccf7c7..1d7142e 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(())
}