serde_valid/json/
to_json_writer.rs

1pub trait ToJsonWriter {
2    /// Convert to json writer.
3    ///
4    /// ```should_panic
5    /// use std::fs::File;
6    /// use serde::Serialize;
7    /// use serde_valid::json::ToJsonWriter;
8    /// use serde_valid::Validate;
9    ///
10    /// #[derive(Debug, Validate, Serialize)]
11    /// struct TestStruct {
12    ///     #[validate(maximum = 100)]
13    ///     val: i32,
14    /// }
15    /// let s = TestStruct { val: 10 };
16    ///
17    /// assert!(s.to_json_writer(File::open("foo.txt").unwrap()).is_ok());
18    /// ```
19    fn to_json_writer<W>(&self, writer: W) -> Result<(), serde_json::Error>
20    where
21        W: std::io::Write;
22
23    /// Convert to pretty json writer.
24    ///
25    /// ```should_panic
26    /// use std::fs::File;
27    /// use serde::Serialize;
28    /// use serde_valid::json::ToJsonWriter;
29    /// use serde_valid::Validate;
30    ///
31    /// #[derive(Debug, Validate, Serialize)]
32    /// struct TestStruct {
33    ///     #[validate(maximum = 100)]
34    ///     val: i32,
35    /// }
36    /// let s = TestStruct { val: 10 };
37    ///
38    /// assert!(s.to_json_writer_pretty(File::open("foo.txt").unwrap()).is_ok());
39    /// ```
40    fn to_json_writer_pretty<W>(&self, writer: W) -> Result<(), serde_json::Error>
41    where
42        W: std::io::Write;
43}
44
45impl<T> ToJsonWriter for T
46where
47    T: serde::Serialize + crate::Validate,
48{
49    fn to_json_writer<W>(&self, writer: W) -> Result<(), serde_json::Error>
50    where
51        W: std::io::Write,
52    {
53        serde_json::to_writer(writer, self)
54    }
55
56    fn to_json_writer_pretty<W>(&self, writer: W) -> Result<(), serde_json::Error>
57    where
58        W: std::io::Write,
59    {
60        serde_json::to_writer_pretty(writer, self)
61    }
62}
63
64impl ToJsonWriter for serde_json::Value {
65    fn to_json_writer<W>(&self, writer: W) -> Result<(), serde_json::Error>
66    where
67        W: std::io::Write,
68    {
69        serde_json::to_writer(writer, self)
70    }
71
72    fn to_json_writer_pretty<W>(&self, writer: W) -> Result<(), serde_json::Error>
73    where
74        W: std::io::Write,
75    {
76        serde_json::to_writer_pretty(writer, self)
77    }
78}