std/sys/io/io_slice/
unsupported.rs

1use crate::mem;
2
3#[derive(Copy, Clone)]
4pub struct IoSlice<'a>(&'a [u8]);
5
6impl<'a> IoSlice<'a> {
7    #[inline]
8    pub fn new(buf: &'a [u8]) -> IoSlice<'a> {
9        IoSlice(buf)
10    }
11
12    #[inline]
13    pub fn advance(&mut self, n: usize) {
14        self.0 = &self.0[n..]
15    }
16
17    #[inline]
18    pub const fn as_slice(&self) -> &'a [u8] {
19        self.0
20    }
21}
22
23pub struct IoSliceMut<'a>(&'a mut [u8]);
24
25impl<'a> IoSliceMut<'a> {
26    #[inline]
27    pub fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> {
28        IoSliceMut(buf)
29    }
30
31    #[inline]
32    pub fn advance(&mut self, n: usize) {
33        let slice = mem::take(&mut self.0);
34        let (_, remaining) = slice.split_at_mut(n);
35        self.0 = remaining;
36    }
37
38    #[inline]
39    pub fn as_slice(&self) -> &[u8] {
40        self.0
41    }
42
43    #[inline]
44    pub const fn into_slice(self) -> &'a mut [u8] {
45        self.0
46    }
47
48    #[inline]
49    pub fn as_mut_slice(&mut self) -> &mut [u8] {
50        self.0
51    }
52}