use core::mem;
use embedded_io::SliceWriteError;
use crate::Write;
impl Write for &mut [u8] {
#[inline]
async fn write(&mut self, buf: &[u8]) -> Result<usize, Self::Error> {
let amt = core::cmp::min(buf.len(), self.len());
if !buf.is_empty() && amt == 0 {
return Err(SliceWriteError::Full);
}
let (a, b) = mem::take(self).split_at_mut(amt);
a.copy_from_slice(&buf[..amt]);
*self = b;
Ok(amt)
}
#[inline]
async fn flush(&mut self) -> Result<(), Self::Error> {
Ok(())
}
#[inline]
async fn write_all(&mut self, buf: &[u8]) -> Result<(), Self::Error> {
if self.len() < buf.len() {
return Err(SliceWriteError::Full);
}
self.write(buf).await?;
Ok(())
}
}