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}