diff --git a/library/std/src/io/mod.rs b/library/std/src/io/mod.rs index d351ee5e739d3..ec312e6932de3 100644 --- a/library/std/src/io/mod.rs +++ b/library/std/src/io/mod.rs @@ -1338,8 +1338,9 @@ impl<'a> IoSliceMut<'a> { /// /// Panics on Windows if the slice is larger than 4GB. #[stable(feature = "iovec", since = "1.36.0")] + #[rustc_const_unstable(feature = "io_slice_const", issue = "none")] #[inline] - pub fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> { + pub const fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> { IoSliceMut(sys::io::IoSliceMut::new(buf)) } @@ -1366,8 +1367,9 @@ impl<'a> IoSliceMut<'a> { /// assert_eq!(buf.deref(), [1; 5].as_ref()); /// ``` #[stable(feature = "io_slice_advance", since = "1.81.0")] + #[rustc_const_unstable(feature = "io_slice_const", issue = "none")] #[inline] - pub fn advance(&mut self, n: usize) { + pub const fn advance(&mut self, n: usize) { self.0.advance(n) } @@ -1496,9 +1498,10 @@ impl<'a> IoSlice<'a> { /// /// Panics on Windows if the slice is larger than 4GB. #[stable(feature = "iovec", since = "1.36.0")] + #[rustc_const_unstable(feature = "io_slice_const", issue = "none")] #[must_use] #[inline] - pub fn new(buf: &'a [u8]) -> IoSlice<'a> { + pub const fn new(buf: &'a [u8]) -> IoSlice<'a> { IoSlice(sys::io::IoSlice::new(buf)) } @@ -1525,8 +1528,9 @@ impl<'a> IoSlice<'a> { /// assert_eq!(buf.deref(), [1; 5].as_ref()); /// ``` #[stable(feature = "io_slice_advance", since = "1.81.0")] + #[rustc_const_unstable(feature = "io_slice_const", issue = "none")] #[inline] - pub fn advance(&mut self, n: usize) { + pub const fn advance(&mut self, n: usize) { self.0.advance(n) } diff --git a/library/std/src/sys/io/io_slice/iovec.rs b/library/std/src/sys/io/io_slice/iovec.rs index df56358969a39..503f6b65a6a71 100644 --- a/library/std/src/sys/io/io_slice/iovec.rs +++ b/library/std/src/sys/io/io_slice/iovec.rs @@ -18,7 +18,7 @@ pub struct IoSlice<'a> { impl<'a> IoSlice<'a> { #[inline] - pub fn new(buf: &'a [u8]) -> IoSlice<'a> { + pub const fn new(buf: &'a [u8]) -> IoSlice<'a> { IoSlice { vec: iovec { iov_base: buf.as_ptr() as *mut u8 as *mut c_void, iov_len: buf.len() }, _p: PhantomData, @@ -26,7 +26,7 @@ impl<'a> IoSlice<'a> { } #[inline] - pub fn advance(&mut self, n: usize) { + pub const fn advance(&mut self, n: usize) { if self.vec.iov_len < n { panic!("advancing IoSlice beyond its length"); } @@ -51,7 +51,7 @@ pub struct IoSliceMut<'a> { impl<'a> IoSliceMut<'a> { #[inline] - pub fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> { + pub const fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> { IoSliceMut { vec: iovec { iov_base: buf.as_mut_ptr() as *mut c_void, iov_len: buf.len() }, _p: PhantomData, @@ -59,7 +59,7 @@ impl<'a> IoSliceMut<'a> { } #[inline] - pub fn advance(&mut self, n: usize) { + pub const fn advance(&mut self, n: usize) { if self.vec.iov_len < n { panic!("advancing IoSliceMut beyond its length"); } @@ -71,7 +71,7 @@ impl<'a> IoSliceMut<'a> { } #[inline] - pub fn as_slice(&self) -> &[u8] { + pub const fn as_slice(&self) -> &[u8] { unsafe { slice::from_raw_parts(self.vec.iov_base as *mut u8, self.vec.iov_len) } } @@ -81,7 +81,7 @@ impl<'a> IoSliceMut<'a> { } #[inline] - pub fn as_mut_slice(&mut self) -> &mut [u8] { + pub const fn as_mut_slice(&mut self) -> &mut [u8] { unsafe { slice::from_raw_parts_mut(self.vec.iov_base as *mut u8, self.vec.iov_len) } } } diff --git a/library/std/src/sys/io/io_slice/unsupported.rs b/library/std/src/sys/io/io_slice/unsupported.rs index 1572cac6cd771..e873b1f7ed554 100644 --- a/library/std/src/sys/io/io_slice/unsupported.rs +++ b/library/std/src/sys/io/io_slice/unsupported.rs @@ -5,12 +5,12 @@ pub struct IoSlice<'a>(&'a [u8]); impl<'a> IoSlice<'a> { #[inline] - pub fn new(buf: &'a [u8]) -> IoSlice<'a> { + pub const fn new(buf: &'a [u8]) -> IoSlice<'a> { IoSlice(buf) } #[inline] - pub fn advance(&mut self, n: usize) { + pub const fn advance(&mut self, n: usize) { self.0 = &self.0[n..] } @@ -24,19 +24,19 @@ pub struct IoSliceMut<'a>(&'a mut [u8]); impl<'a> IoSliceMut<'a> { #[inline] - pub fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> { + pub const fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> { IoSliceMut(buf) } #[inline] - pub fn advance(&mut self, n: usize) { + pub const fn advance(&mut self, n: usize) { let slice = mem::take(&mut self.0); let (_, remaining) = slice.split_at_mut(n); self.0 = remaining; } #[inline] - pub fn as_slice(&self) -> &[u8] { + pub const fn as_slice(&self) -> &[u8] { self.0 } @@ -46,7 +46,7 @@ impl<'a> IoSliceMut<'a> { } #[inline] - pub fn as_mut_slice(&mut self) -> &mut [u8] { + pub const fn as_mut_slice(&mut self) -> &mut [u8] { self.0 } } diff --git a/library/std/src/sys/io/io_slice/wasi.rs b/library/std/src/sys/io/io_slice/wasi.rs index 87acbbd924e56..d8dd2b5dac267 100644 --- a/library/std/src/sys/io/io_slice/wasi.rs +++ b/library/std/src/sys/io/io_slice/wasi.rs @@ -10,12 +10,12 @@ pub struct IoSlice<'a> { impl<'a> IoSlice<'a> { #[inline] - pub fn new(buf: &'a [u8]) -> IoSlice<'a> { + pub const fn new(buf: &'a [u8]) -> IoSlice<'a> { IoSlice { vec: wasi::Ciovec { buf: buf.as_ptr(), buf_len: buf.len() }, _p: PhantomData } } #[inline] - pub fn advance(&mut self, n: usize) { + pub const fn advance(&mut self, n: usize) { if self.vec.buf_len < n { panic!("advancing IoSlice beyond its length"); } @@ -40,7 +40,7 @@ pub struct IoSliceMut<'a> { impl<'a> IoSliceMut<'a> { #[inline] - pub fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> { + pub const fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> { IoSliceMut { vec: wasi::Iovec { buf: buf.as_mut_ptr(), buf_len: buf.len() }, _p: PhantomData, @@ -48,7 +48,7 @@ impl<'a> IoSliceMut<'a> { } #[inline] - pub fn advance(&mut self, n: usize) { + pub const fn advance(&mut self, n: usize) { if self.vec.buf_len < n { panic!("advancing IoSlice beyond its length"); } @@ -60,7 +60,7 @@ impl<'a> IoSliceMut<'a> { } #[inline] - pub fn as_slice(&self) -> &[u8] { + pub const fn as_slice(&self) -> &[u8] { unsafe { slice::from_raw_parts(self.vec.buf as *const u8, self.vec.buf_len) } } @@ -70,7 +70,7 @@ impl<'a> IoSliceMut<'a> { } #[inline] - pub fn as_mut_slice(&mut self) -> &mut [u8] { + pub const fn as_mut_slice(&mut self) -> &mut [u8] { unsafe { slice::from_raw_parts_mut(self.vec.buf as *mut u8, self.vec.buf_len) } } } diff --git a/library/std/src/sys/io/io_slice/windows.rs b/library/std/src/sys/io/io_slice/windows.rs index c3d8ec87c19e3..c0458c1324591 100644 --- a/library/std/src/sys/io/io_slice/windows.rs +++ b/library/std/src/sys/io/io_slice/windows.rs @@ -11,7 +11,7 @@ pub struct IoSlice<'a> { impl<'a> IoSlice<'a> { #[inline] - pub fn new(buf: &'a [u8]) -> IoSlice<'a> { + pub const fn new(buf: &'a [u8]) -> IoSlice<'a> { assert!(buf.len() <= u32::MAX as usize); IoSlice { vec: c::WSABUF { len: buf.len() as u32, buf: buf.as_ptr() as *mut u8 }, @@ -20,7 +20,7 @@ impl<'a> IoSlice<'a> { } #[inline] - pub fn advance(&mut self, n: usize) { + pub const fn advance(&mut self, n: usize) { if (self.vec.len as usize) < n { panic!("advancing IoSlice beyond its length"); } @@ -45,7 +45,7 @@ pub struct IoSliceMut<'a> { impl<'a> IoSliceMut<'a> { #[inline] - pub fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> { + pub const fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> { assert!(buf.len() <= u32::MAX as usize); IoSliceMut { vec: c::WSABUF { len: buf.len() as u32, buf: buf.as_mut_ptr() }, @@ -54,7 +54,7 @@ impl<'a> IoSliceMut<'a> { } #[inline] - pub fn advance(&mut self, n: usize) { + pub const fn advance(&mut self, n: usize) { if (self.vec.len as usize) < n { panic!("advancing IoSliceMut beyond its length"); } @@ -66,7 +66,7 @@ impl<'a> IoSliceMut<'a> { } #[inline] - pub fn as_slice(&self) -> &[u8] { + pub const fn as_slice(&self) -> &[u8] { unsafe { slice::from_raw_parts(self.vec.buf, self.vec.len as usize) } } @@ -76,7 +76,7 @@ impl<'a> IoSliceMut<'a> { } #[inline] - pub fn as_mut_slice(&mut self) -> &mut [u8] { + pub const fn as_mut_slice(&mut self) -> &mut [u8] { unsafe { slice::from_raw_parts_mut(self.vec.buf, self.vec.len as usize) } } }