toml/ser/
array.rs
1use super::write_document;
2use super::{Error, Serializer};
3use crate::fmt::DocumentFormatter;
4
5type InnerSerializeDocumentSeq =
6 <toml_edit::ser::ValueSerializer as serde::Serializer>::SerializeSeq;
7
8#[doc(hidden)]
9pub struct SerializeDocumentArray<'d> {
10 inner: InnerSerializeDocumentSeq,
11 dst: &'d mut String,
12 settings: DocumentFormatter,
13}
14
15impl<'d> SerializeDocumentArray<'d> {
16 pub(crate) fn new(ser: Serializer<'d>, inner: InnerSerializeDocumentSeq) -> Self {
17 Self {
18 inner,
19 dst: ser.dst,
20 settings: ser.settings,
21 }
22 }
23}
24
25impl serde::ser::SerializeSeq for SerializeDocumentArray<'_> {
26 type Ok = ();
27 type Error = Error;
28
29 fn serialize_element<T>(&mut self, value: &T) -> Result<(), Error>
30 where
31 T: serde::ser::Serialize + ?Sized,
32 {
33 self.inner.serialize_element(value).map_err(Error::wrap)
34 }
35
36 fn end(self) -> Result<Self::Ok, Self::Error> {
37 write_document(self.dst, self.settings, self.inner.end())
38 }
39}
40
41impl serde::ser::SerializeTuple for SerializeDocumentArray<'_> {
42 type Ok = ();
43 type Error = Error;
44
45 fn serialize_element<T>(&mut self, value: &T) -> Result<(), Error>
46 where
47 T: serde::ser::Serialize + ?Sized,
48 {
49 self.inner.serialize_element(value).map_err(Error::wrap)
50 }
51
52 fn end(self) -> Result<Self::Ok, Self::Error> {
53 write_document(self.dst, self.settings, self.inner.end())
54 }
55}
56
57impl serde::ser::SerializeTupleVariant for SerializeDocumentArray<'_> {
58 type Ok = ();
59 type Error = Error;
60
61 fn serialize_field<T>(&mut self, value: &T) -> Result<(), Error>
62 where
63 T: serde::ser::Serialize + ?Sized,
64 {
65 self.inner.serialize_field(value).map_err(Error::wrap)
66 }
67
68 fn end(self) -> Result<Self::Ok, Self::Error> {
69 write_document(self.dst, self.settings, self.inner.end())
70 }
71}
72
73impl serde::ser::SerializeTupleStruct for SerializeDocumentArray<'_> {
74 type Ok = ();
75 type Error = Error;
76
77 fn serialize_field<T>(&mut self, value: &T) -> Result<(), Error>
78 where
79 T: serde::ser::Serialize + ?Sized,
80 {
81 self.inner.serialize_field(value).map_err(Error::wrap)
82 }
83
84 fn end(self) -> Result<Self::Ok, Self::Error> {
85 write_document(self.dst, self.settings, self.inner.end())
86 }
87}