idewave_formatters/
json_formatter.rs

1use std::io::{Write};
2use serde_json::ser::{PrettyFormatter, Serializer};
3
4#[derive(Default)]
5pub struct JsonFormatter {
6    pretty: PrettyFormatter<'static>,
7}
8
9impl JsonFormatter {
10    pub fn init() -> Serializer<Vec<u8>, Self> {
11        let buffer = Vec::new();
12        Serializer::with_formatter(buffer, JsonFormatter::default())
13    }
14}
15
16impl serde_json::ser::Formatter for JsonFormatter {
17    fn begin_object<W>(&mut self, writer: &mut W) -> std::io::Result<()> where W: ?Sized + Write {
18        self.pretty.begin_object(writer)
19    }
20
21    fn end_object<W>(&mut self, writer: &mut W) -> std::io::Result<()> where W: ?Sized + Write {
22        self.pretty.end_object(writer)
23    }
24
25    fn begin_object_key<W>(
26        &mut self,
27        writer: &mut W,
28        first: bool
29    ) -> std::io::Result<()> where W: ?Sized + Write {
30        self.pretty.begin_object_key(writer, first)
31    }
32
33    fn end_object_value<W>(&mut self, writer: &mut W) -> std::io::Result<()> where W: ?Sized + Write {
34        self.pretty.end_object_value(writer)
35    }
36}