]> git.proxmox.com Git - rustc.git/blob - library/std/src/sys/sgx/io.rs
New upstream version 1.47.0+dfsg1
[rustc.git] / library / std / src / sys / sgx / io.rs
1 use crate::mem;
2
3 #[derive(Copy, Clone)]
4 pub struct IoSlice<'a>(&'a [u8]);
5
6 impl<'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 fn as_slice(&self) -> &[u8] {
19 self.0
20 }
21 }
22
23 pub struct IoSliceMut<'a>(&'a mut [u8]);
24
25 impl<'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::replace(&mut self.0, &mut []);
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 fn as_mut_slice(&mut self) -> &mut [u8] {
45 self.0
46 }
47 }