toml/ser/ser_value/
array.rs

1use 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}