embedded_io_async/impls/
slice_ref.rs1use crate::{BufRead, Read};
2
3impl Read for &[u8] {
8 #[inline]
9 async fn read(&mut self, buf: &mut [u8]) -> Result<usize, Self::Error> {
10 let amt = core::cmp::min(buf.len(), self.len());
11 let (a, b) = self.split_at(amt);
12
13 if amt == 1 {
17 buf[0] = a[0];
18 } else {
19 buf[..amt].copy_from_slice(a);
20 }
21
22 *self = b;
23 Ok(amt)
24 }
25}
26
27impl BufRead for &[u8] {
28 #[inline]
29 async fn fill_buf(&mut self) -> Result<&[u8], Self::Error> {
30 Ok(*self)
31 }
32
33 #[inline]
34 fn consume(&mut self, amt: usize) {
35 *self = &self[amt..];
36 }
37}