idewave-formatters 0.1.0

Macro for implementing packet structures
Documentation
use std::io::{Write};
use serde_json::ser::{PrettyFormatter, Serializer};

#[derive(Default)]
pub struct JsonFormatter {
    pretty: PrettyFormatter<'static>,
}

impl JsonFormatter {
    pub fn init() -> Serializer<Vec<u8>, Self> {
        let buffer = Vec::new();
        Serializer::with_formatter(buffer, JsonFormatter::default())
    }
}

impl serde_json::ser::Formatter for JsonFormatter {
    fn begin_object<W>(&mut self, writer: &mut W) -> std::io::Result<()> where W: ?Sized + Write {
        self.pretty.begin_object(writer)
    }

    fn end_object<W>(&mut self, writer: &mut W) -> std::io::Result<()> where W: ?Sized + Write {
        self.pretty.end_object(writer)
    }

    fn begin_object_key<W>(
        &mut self,
        writer: &mut W,
        first: bool
    ) -> std::io::Result<()> where W: ?Sized + Write {
        self.pretty.begin_object_key(writer, first)
    }

    fn end_object_value<W>(&mut self, writer: &mut W) -> std::io::Result<()> where W: ?Sized + Write {
        self.pretty.end_object_value(writer)
    }
}