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