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