messagepack_rs/stream/
serializer.rs

1use crate::serializable::*;
2use std::io::{BufWriter, Error, Write};
3
4pub struct Serializer<T: Write>(BufWriter<T>);
5
6impl<W: Write> Serializer<W> {
7    pub fn new(w: W) -> Self {
8        Serializer(BufWriter::new(w))
9    }
10
11    pub fn serialize<T: Serializable>(&mut self, value: T) -> Result<usize, SerializeError> {
12        self.0.write(&value.serialize()?).or(Err(SerializeError::FailedToWrite))
13    }
14
15    pub fn get_ref(&self) -> &W {
16        self.0.get_ref()
17    }
18
19    pub fn flush(&mut self) -> Result<(), Error> {
20        self.0.flush()
21    }
22}