use std::io::{
Result,
Write,
};
use crate::{
Output,
UncheckedSlice,
traits::validate_write_count,
};
impl<W> Output for W
where
W: Write + ?Sized,
{
type Item = u8;
#[inline(always)]
unsafe fn write_unchecked(
&mut self,
input: &[u8],
index: usize,
count: usize,
) -> Result<usize> {
let source = unsafe { UncheckedSlice::subslice(input, index, count) };
Write::write(self, source)
}
#[inline(always)]
fn write(&mut self, input: &[Self::Item]) -> Result<usize> {
let written = Write::write(self, input)?;
validate_write_count(written, input.len())?;
Ok(written)
}
#[inline(always)]
fn flush(&mut self) -> Result<()> {
Write::flush(self)
}
}