Skip to content

Commit 319a9e2

Browse files
committed
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 <[email protected]> (cherry picked from commit ed6a3c9) Signed-off-by: Ian Jackson <[email protected]>
1 parent 2ded348 commit 319a9e2

File tree

1 file changed

+8
-13
lines changed

1 file changed

+8
-13
lines changed

src/ser.rs

+8-13
Original file line numberDiff line numberDiff line change
@@ -234,10 +234,10 @@ impl<'a> ser::Serializer for &'a mut ConfigSerializer {
234234
_name: &'static str,
235235
_variant_index: u32,
236236
variant: &'static str,
237-
_len: usize,
237+
len: usize,
238238
) -> Result<Self::SerializeTupleVariant> {
239239
self.push_key(variant);
240-
Ok(self)
240+
self.serialize_seq(Some(len))
241241
}
242242

243243
fn serialize_map(self, _len: Option<usize>) -> Result<Self::SerializeMap> {
@@ -286,13 +286,11 @@ impl<'a> ser::SerializeTuple for &'a mut ConfigSerializer {
286286
where
287287
T: ?Sized + ser::Serialize,
288288
{
289-
self.inc_last_key_index()?;
290-
value.serialize(&mut **self)?;
291-
Ok(())
289+
ser::SerializeSeq::serialize_element(self, value)
292290
}
293291

294292
fn end(self) -> Result<Self::Ok> {
295-
Ok(())
293+
ser::SerializeSeq::end(self)
296294
}
297295
}
298296

@@ -304,13 +302,11 @@ impl<'a> ser::SerializeTupleStruct for &'a mut ConfigSerializer {
304302
where
305303
T: ?Sized + ser::Serialize,
306304
{
307-
self.inc_last_key_index()?;
308-
value.serialize(&mut **self)?;
309-
Ok(())
305+
ser::SerializeSeq::serialize_element(self, value)
310306
}
311307

312308
fn end(self) -> Result<Self::Ok> {
313-
Ok(())
309+
ser::SerializeSeq::end(self)
314310
}
315311
}
316312

@@ -322,12 +318,11 @@ impl<'a> ser::SerializeTupleVariant for &'a mut ConfigSerializer {
322318
where
323319
T: ?Sized + ser::Serialize,
324320
{
325-
self.inc_last_key_index()?;
326-
value.serialize(&mut **self)?;
327-
Ok(())
321+
ser::SerializeSeq::serialize_element(self, value)
328322
}
329323

330324
fn end(self) -> Result<Self::Ok> {
325+
ser::SerializeSeq::end(&mut *self)?;
331326
self.pop_key();
332327
Ok(())
333328
}

0 commit comments

Comments
 (0)