]> git.lizzy.rs Git - rust.git/blob - library/std/src/sys/unsupported/io.rs
Rollup merge of #105482 - wesleywiser:fix_debuginfo_ub, r=tmiasko
[rust.git] / library / std / src / sys / unsupported / 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 }
48
49 pub fn is_terminal<T>(_: &T) -> bool {
50     false
51 }