pub use babbel_core::io::traits::IByteStream as BencodeRead;
pub trait RewindableRead {
fn reset(&mut self);
}
pub trait BencodeWrite {
fn write_byte(&mut self, byte: u8);
fn write_bytes(&mut self, bytes: &[u8]);
}
pub trait BufferedWrite {
fn clear(&mut self);
fn last_byte(&self) -> Option<u8>;
}
pub trait ISource: BencodeRead + RewindableRead {
fn next(&mut self) {
self.advance();
}
fn current(&mut self) -> Option<char> {
self.peek_byte().map(|b| b as char)
}
fn more(&mut self) -> bool {
self.has_more()
}
}
pub trait IDestination: BencodeWrite + BufferedWrite {
fn add_byte(&mut self, byte: u8) {
self.write_byte(byte);
}
fn add_bytes(&mut self, bytes: &str) {
self.write_bytes(bytes.as_bytes());
}
fn last(&self) -> Option<u8> {
self.last_byte()
}
}