use std::io::{Read, Write};
use super::*;
pub trait ReadFrom: Sized {
fn read_from<R: Read>(r: &mut R) -> Result<Self>;
}
pub trait ReadAtom: Sized {
fn read_atom<R: Read>(header: &Header, r: &mut R) -> Result<Self>;
}
pub trait ReadUntil: Sized {
fn read_until<R: Read>(r: &mut R) -> Result<Self>;
}
pub trait WriteTo {
fn write_to<W: Write>(&self, w: &mut W) -> Result<()>;
}
impl<T: Encode> WriteTo for T {
fn write_to<W: Write>(&self, w: &mut W) -> Result<()> {
let mut buf = Vec::new();
self.encode(&mut buf)?;
Ok(w.write_all(&buf)?)
}
}