use std::io::{
Result,
Write,
};
pub trait WriteExt: Write {
unsafe fn write_unchecked(&mut self, buffer: &[u8], start_index: usize, count: usize) -> Result<usize> {
debug_assert!(
start_index
.checked_add(count)
.is_some_and(|end_index| end_index <= buffer.len()),
"unchecked write range exceeds buffer"
);
let source = unsafe { core::slice::from_raw_parts(buffer.as_ptr().add(start_index), count) };
self.write(source)
}
unsafe fn write_all_unchecked(&mut self, buffer: &[u8], start_index: usize, count: usize) -> Result<()> {
debug_assert!(
start_index
.checked_add(count)
.is_some_and(|end_index| end_index <= buffer.len()),
"unchecked write range exceeds buffer"
);
let source = unsafe { core::slice::from_raw_parts(buffer.as_ptr().add(start_index), count) };
self.write_all(source)
}
}
impl<T> WriteExt for T where T: Write + ?Sized {}