use crate::error::Error;
mod ioread;
pub use ioread::*;
mod sliceread;
pub use sliceread::*;
mod private {
pub trait Sealed {}
}
pub trait Read<'de>: private::Sealed {
fn peek(&mut self) -> Result<u8, Error>;
fn next(&mut self) -> Result<u8, Error>;
fn read_const_bytes<const N: usize>(&mut self) -> Result<[u8; N], Error> {
let mut buf = [0u8; N];
self.read_exact(&mut buf)?;
Ok(buf)
}
fn peek_bytes(&mut self, n: usize) -> Result<&[u8], Error>;
fn read_bytes(&mut self, n: usize) -> Result<Vec<u8>, Error> {
let mut buf = vec![0u8; n];
self.read_exact(&mut buf)?;
Ok(buf)
}
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>;
fn forward_read_bytes<V>(&mut self, len: usize, visitor: V) -> Result<V::Value, Error>
where
V: serde::de::Visitor<'de>;
fn forward_read_str<V>(&mut self, len: usize, visitor: V) -> Result<V::Value, Error>
where
V: serde::de::Visitor<'de>;
}