use std::io::{
Read,
Result,
};
use crate::util::UncheckedSlice;
use crate::{
Input,
traits::validate_read_count,
};
impl<R> Input for R
where
R: Read + ?Sized,
{
type Item = u8;
#[inline(always)]
unsafe fn read_unchecked(
&mut self,
output: &mut [u8],
index: usize,
count: usize,
) -> Result<usize> {
let target =
unsafe { UncheckedSlice::subslice_mut(output, index, count) };
Read::read(self, target)
}
#[inline(always)]
fn read(&mut self, output: &mut [Self::Item]) -> Result<usize> {
let read = Read::read(self, output)?;
validate_read_count(read, output.len())?;
Ok(read)
}
}