use std::io::{Read, Write}; use trackable::*; use crate::Result; pub trait ReadFrom: Sized { fn read_from(reader: &mut R) -> Result; } pub trait WriteTo { fn write_to(&self, writer: &mut W) -> Result<()>; fn to_bytes(&self) -> Result> { let mut buf = Vec::new(); track_try!(self.write_to(&mut buf)); Ok(buf) } }