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}