serde_valid/features/toml/
to_toml_writer.rs1use serde::ser::Error;
2
3use super::ToTomlString;
4
5pub trait ToTomlWriter {
6 fn to_toml_writer<W>(&self, writer: W) -> Result<(), serde_toml::ser::Error>
24 where
25 W: std::io::Write;
26
27 fn to_toml_writer_pretty<W>(&self, writer: W) -> Result<(), serde_toml::ser::Error>
45 where
46 W: std::io::Write;
47}
48
49impl<T> ToTomlWriter for T
50where
51 T: serde::Serialize + crate::Validate,
52{
53 fn to_toml_writer<W>(&self, writer: W) -> Result<(), serde_toml::ser::Error>
54 where
55 W: std::io::Write,
56 {
57 let mut writer = writer;
58 match writer.write_all(&self.to_toml_string()?.into_bytes()) {
59 Ok(_) => Ok(()),
60 Err(err) => Err(serde_toml::ser::Error::custom(err.to_string())),
61 }
62 }
63
64 fn to_toml_writer_pretty<W>(&self, writer: W) -> Result<(), serde_toml::ser::Error>
65 where
66 W: std::io::Write,
67 {
68 let mut writer = writer;
69 match writer.write_all(&self.to_toml_string_pretty()?.into_bytes()) {
70 Ok(_) => Ok(()),
71 Err(err) => Err(serde_toml::ser::Error::custom(err.to_string())),
72 }
73 }
74}
75
76impl ToTomlWriter for serde_toml::Value {
77 fn to_toml_writer<W>(&self, writer: W) -> Result<(), serde_toml::ser::Error>
78 where
79 W: std::io::Write,
80 {
81 let mut writer = writer;
82 match writer.write_all(&self.to_toml_string()?.into_bytes()) {
83 Ok(_) => Ok(()),
84 Err(err) => Err(serde_toml::ser::Error::custom(err.to_string())),
85 }
86 }
87
88 fn to_toml_writer_pretty<W>(&self, writer: W) -> Result<(), serde_toml::ser::Error>
89 where
90 W: std::io::Write,
91 {
92 let mut writer = writer;
93 match writer.write_all(&self.to_toml_string_pretty()?.into_bytes()) {
94 Ok(_) => Ok(()),
95 Err(err) => Err(serde_toml::ser::Error::custom(err.to_string())),
96 }
97 }
98}