use Read;
use Write;
use error::BufError;
pub trait BufRead: Read {
fn fill_buf(&mut self) -> Result<&[u8], Self::ReadError>;
fn consume(&mut self, amount: usize);
}
pub trait BufReadProgress: Read {
type BufReadError;
fn fill_progress(&mut self) -> Result<&[u8], BufError<Self::BufReadError, Self::ReadError>>;
fn require_bytes(&mut self, amount: usize) -> Result<&[u8], BufError<Self::BufReadError, Self::ReadError>>;
}
pub trait BufWrite: Write {
fn request_buffer(&mut self, min: usize, max: Option<usize>) -> &mut [u8];
fn submit_buffer(&mut self, size: usize);
}
pub trait BufWriteRequire: BufWrite {
type BufWriteError;
fn require_buffer(&mut self, size: usize) -> Result<&mut [u8], Self::BufWriteError>;
}