Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit db62f1f

Browse files
Make IoSlice and IoSliceMut methods unstably const
1 parent 9cd918b commit db62f1f

File tree

5 files changed

+32
-28
lines changed

5 files changed

+32
-28
lines changed

‎library/std/src/io/mod.rs‎

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1338,8 +1338,9 @@ impl<'a> IoSliceMut<'a> {
13381338
///
13391339
/// Panics on Windows if the slice is larger than 4GB.
13401340
#[stable(feature = "iovec", since = "1.36.0")]
1341+
#[rustc_const_unstable(feature = "io_slice_const", issue = "none")]
13411342
#[inline]
1342-
pub fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> {
1343+
pub constfn new(buf: &'a mut [u8]) -> IoSliceMut<'a> {
13431344
IoSliceMut(sys::io::IoSliceMut::new(buf))
13441345
}
13451346

@@ -1366,8 +1367,9 @@ impl<'a> IoSliceMut<'a> {
13661367
/// assert_eq!(buf.deref(), [1; 5].as_ref());
13671368
/// ```
13681369
#[stable(feature = "io_slice_advance", since = "1.81.0")]
1370+
#[rustc_const_unstable(feature = "io_slice_const", issue = "none")]
13691371
#[inline]
1370-
pub fn advance(&mut self, n: usize) {
1372+
pub constfn advance(&mut self, n: usize) {
13711373
self.0.advance(n)
13721374
}
13731375

@@ -1496,9 +1498,10 @@ impl<'a> IoSlice<'a> {
14961498
///
14971499
/// Panics on Windows if the slice is larger than 4GB.
14981500
#[stable(feature = "iovec", since = "1.36.0")]
1501+
#[rustc_const_unstable(feature = "io_slice_const", issue = "none")]
14991502
#[must_use]
15001503
#[inline]
1501-
pub fn new(buf: &'a [u8]) -> IoSlice<'a> {
1504+
pub constfn new(buf: &'a [u8]) -> IoSlice<'a> {
15021505
IoSlice(sys::io::IoSlice::new(buf))
15031506
}
15041507

@@ -1525,8 +1528,9 @@ impl<'a> IoSlice<'a> {
15251528
/// assert_eq!(buf.deref(), [1; 5].as_ref());
15261529
/// ```
15271530
#[stable(feature = "io_slice_advance", since = "1.81.0")]
1531+
#[rustc_const_unstable(feature = "io_slice_const", issue = "none")]
15281532
#[inline]
1529-
pub fn advance(&mut self, n: usize) {
1533+
pub constfn advance(&mut self, n: usize) {
15301534
self.0.advance(n)
15311535
}
15321536

‎library/std/src/sys/io/io_slice/iovec.rs‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@ pub struct IoSlice<'a> {
1818

1919
impl<'a> IoSlice<'a> {
2020
#[inline]
21-
pub fn new(buf: &'a [u8]) -> IoSlice<'a> {
21+
pub constfn new(buf: &'a [u8]) -> IoSlice<'a> {
2222
IoSlice {
2323
vec: iovec { iov_base: buf.as_ptr() as *mut u8 as *mut c_void, iov_len: buf.len() },
2424
_p: PhantomData,
2525
}
2626
}
2727

2828
#[inline]
29-
pub fn advance(&mut self, n: usize) {
29+
pub constfn advance(&mut self, n: usize) {
3030
if self.vec.iov_len < n {
3131
panic!("advancing IoSlice beyond its length");
3232
}
@@ -51,15 +51,15 @@ pub struct IoSliceMut<'a> {
5151

5252
impl<'a> IoSliceMut<'a> {
5353
#[inline]
54-
pub fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> {
54+
pub constfn new(buf: &'a mut [u8]) -> IoSliceMut<'a> {
5555
IoSliceMut {
5656
vec: iovec { iov_base: buf.as_mut_ptr() as *mut c_void, iov_len: buf.len() },
5757
_p: PhantomData,
5858
}
5959
}
6060

6161
#[inline]
62-
pub fn advance(&mut self, n: usize) {
62+
pub constfn advance(&mut self, n: usize) {
6363
if self.vec.iov_len < n {
6464
panic!("advancing IoSliceMut beyond its length");
6565
}
@@ -71,7 +71,7 @@ impl<'a> IoSliceMut<'a> {
7171
}
7272

7373
#[inline]
74-
pub fn as_slice(&self) -> &[u8] {
74+
pub constfn as_slice(&self) -> &[u8] {
7575
unsafe { slice::from_raw_parts(self.vec.iov_base as *mut u8, self.vec.iov_len) }
7676
}
7777

@@ -81,7 +81,7 @@ impl<'a> IoSliceMut<'a> {
8181
}
8282

8383
#[inline]
84-
pub fn as_mut_slice(&mut self) -> &mut [u8] {
84+
pub constfn as_mut_slice(&mut self) -> &mut [u8] {
8585
unsafe { slice::from_raw_parts_mut(self.vec.iov_base as *mut u8, self.vec.iov_len) }
8686
}
8787
}

‎library/std/src/sys/io/io_slice/unsupported.rs‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ pub struct IoSlice<'a>(&'a [u8]);
55

66
impl<'a> IoSlice<'a> {
77
#[inline]
8-
pub fn new(buf: &'a [u8]) -> IoSlice<'a> {
8+
pub constfn new(buf: &'a [u8]) -> IoSlice<'a> {
99
IoSlice(buf)
1010
}
1111

1212
#[inline]
13-
pub fn advance(&mut self, n: usize) {
13+
pub constfn advance(&mut self, n: usize) {
1414
self.0 = &self.0[n..]
1515
}
1616

@@ -24,19 +24,19 @@ pub struct IoSliceMut<'a>(&'a mut [u8]);
2424

2525
impl<'a> IoSliceMut<'a> {
2626
#[inline]
27-
pub fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> {
27+
pub constfn new(buf: &'a mut [u8]) -> IoSliceMut<'a> {
2828
IoSliceMut(buf)
2929
}
3030

3131
#[inline]
32-
pub fn advance(&mut self, n: usize) {
32+
pub constfn advance(&mut self, n: usize) {
3333
let slice = mem::take(&mut self.0);
3434
let (_, remaining) = slice.split_at_mut(n);
3535
self.0 = remaining;
3636
}
3737

3838
#[inline]
39-
pub fn as_slice(&self) -> &[u8] {
39+
pub constfn as_slice(&self) -> &[u8] {
4040
self.0
4141
}
4242

@@ -46,7 +46,7 @@ impl<'a> IoSliceMut<'a> {
4646
}
4747

4848
#[inline]
49-
pub fn as_mut_slice(&mut self) -> &mut [u8] {
49+
pub constfn as_mut_slice(&mut self) -> &mut [u8] {
5050
self.0
5151
}
5252
}

‎library/std/src/sys/io/io_slice/wasi.rs‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ pub struct IoSlice<'a> {
1010

1111
impl<'a> IoSlice<'a> {
1212
#[inline]
13-
pub fn new(buf: &'a [u8]) -> IoSlice<'a> {
13+
pub constfn new(buf: &'a [u8]) -> IoSlice<'a> {
1414
IoSlice { vec: wasi::Ciovec { buf: buf.as_ptr(), buf_len: buf.len() }, _p: PhantomData }
1515
}
1616

1717
#[inline]
18-
pub fn advance(&mut self, n: usize) {
18+
pub constfn advance(&mut self, n: usize) {
1919
if self.vec.buf_len < n {
2020
panic!("advancing IoSlice beyond its length");
2121
}
@@ -40,15 +40,15 @@ pub struct IoSliceMut<'a> {
4040

4141
impl<'a> IoSliceMut<'a> {
4242
#[inline]
43-
pub fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> {
43+
pub constfn new(buf: &'a mut [u8]) -> IoSliceMut<'a> {
4444
IoSliceMut {
4545
vec: wasi::Iovec { buf: buf.as_mut_ptr(), buf_len: buf.len() },
4646
_p: PhantomData,
4747
}
4848
}
4949

5050
#[inline]
51-
pub fn advance(&mut self, n: usize) {
51+
pub constfn advance(&mut self, n: usize) {
5252
if self.vec.buf_len < n {
5353
panic!("advancing IoSlice beyond its length");
5454
}
@@ -60,7 +60,7 @@ impl<'a> IoSliceMut<'a> {
6060
}
6161

6262
#[inline]
63-
pub fn as_slice(&self) -> &[u8] {
63+
pub constfn as_slice(&self) -> &[u8] {
6464
unsafe { slice::from_raw_parts(self.vec.buf as *const u8, self.vec.buf_len) }
6565
}
6666

@@ -70,7 +70,7 @@ impl<'a> IoSliceMut<'a> {
7070
}
7171

7272
#[inline]
73-
pub fn as_mut_slice(&mut self) -> &mut [u8] {
73+
pub constfn as_mut_slice(&mut self) -> &mut [u8] {
7474
unsafe { slice::from_raw_parts_mut(self.vec.buf as *mut u8, self.vec.buf_len) }
7575
}
7676
}

‎library/std/src/sys/io/io_slice/windows.rs‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ pub struct IoSlice<'a> {
1111

1212
impl<'a> IoSlice<'a> {
1313
#[inline]
14-
pub fn new(buf: &'a [u8]) -> IoSlice<'a> {
14+
pub constfn new(buf: &'a [u8]) -> IoSlice<'a> {
1515
assert!(buf.len() <= u32::MAX as usize);
1616
IoSlice {
1717
vec: c::WSABUF { len: buf.len() as u32, buf: buf.as_ptr() as *mut u8 },
@@ -20,7 +20,7 @@ impl<'a> IoSlice<'a> {
2020
}
2121

2222
#[inline]
23-
pub fn advance(&mut self, n: usize) {
23+
pub constfn advance(&mut self, n: usize) {
2424
if (self.vec.len as usize) < n {
2525
panic!("advancing IoSlice beyond its length");
2626
}
@@ -45,7 +45,7 @@ pub struct IoSliceMut<'a> {
4545

4646
impl<'a> IoSliceMut<'a> {
4747
#[inline]
48-
pub fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> {
48+
pub constfn new(buf: &'a mut [u8]) -> IoSliceMut<'a> {
4949
assert!(buf.len() <= u32::MAX as usize);
5050
IoSliceMut {
5151
vec: c::WSABUF { len: buf.len() as u32, buf: buf.as_mut_ptr() },
@@ -54,7 +54,7 @@ impl<'a> IoSliceMut<'a> {
5454
}
5555

5656
#[inline]
57-
pub fn advance(&mut self, n: usize) {
57+
pub constfn advance(&mut self, n: usize) {
5858
if (self.vec.len as usize) < n {
5959
panic!("advancing IoSliceMut beyond its length");
6060
}
@@ -66,7 +66,7 @@ impl<'a> IoSliceMut<'a> {
6666
}
6767

6868
#[inline]
69-
pub fn as_slice(&self) -> &[u8] {
69+
pub constfn as_slice(&self) -> &[u8] {
7070
unsafe { slice::from_raw_parts(self.vec.buf, self.vec.len as usize) }
7171
}
7272

@@ -76,7 +76,7 @@ impl<'a> IoSliceMut<'a> {
7676
}
7777

7878
#[inline]
79-
pub fn as_mut_slice(&mut self) -> &mut [u8] {
79+
pub constfn as_mut_slice(&mut self) -> &mut [u8] {
8080
unsafe { slice::from_raw_parts_mut(self.vec.buf, self.vec.len as usize) }
8181
}
8282
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /