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