]> git.lizzy.rs Git - rust.git/blob - src/libstd/sys/cloudabi/io.rs
Update const_forget.rs
[rust.git] / src / libstd / sys / cloudabi / io.rs
1 use crate::mem;
2
3 pub struct IoSlice<'a>(&'a [u8]);
4
5 impl<'a> IoSlice<'a> {
6     #[inline]
7     pub fn new(buf: &'a [u8]) -> IoSlice<'a> {
8         IoSlice(buf)
9     }
10
11     #[inline]
12     pub fn advance(&mut self, n: usize) {
13         self.0 = &self.0[n..]
14     }
15
16     #[inline]
17     pub fn as_slice(&self) -> &[u8] {
18         self.0
19     }
20 }
21
22 pub struct IoSliceMut<'a>(&'a mut [u8]);
23
24 impl<'a> IoSliceMut<'a> {
25     #[inline]
26     pub fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> {
27         IoSliceMut(buf)
28     }
29
30     #[inline]
31     pub fn advance(&mut self, n: usize) {
32         let slice = mem::replace(&mut self.0, &mut []);
33         let (_, remaining) = slice.split_at_mut(n);
34         self.0 = remaining;
35     }
36
37     #[inline]
38     pub fn as_slice(&self) -> &[u8] {
39         self.0
40     }
41
42     #[inline]
43     pub fn as_mut_slice(&mut self) -> &mut [u8] {
44         self.0
45     }
46 }