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