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 e0f3c3e

Browse files
Use super let
1 parent ada55f8 commit e0f3c3e

File tree

3 files changed

+11
-14
lines changed

3 files changed

+11
-14
lines changed

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1636,6 +1636,7 @@ pub(crate) macro limit_slices($bufs:expr, $n:expr) {
16361636
'slices: {
16371637
let bufs: &[IoSlice<'_>] = $bufs;
16381638
let n: usize = $n;
1639+
super let empty = &[IoSlice::new(&[])];
16391640
// if bufs.len() > n || bufs.is_empty()
16401641
if core::intrinsics::unlikely(bufs.len().wrapping_sub(1) >= n) {
16411642
for (i, buf) in bufs.iter().enumerate() {
@@ -1644,10 +1645,9 @@ pub(crate) macro limit_slices($bufs:expr, $n:expr) {
16441645
break 'slices &bufs[i..i + len];
16451646
}
16461647
}
1647-
// All buffers are empty. Since POSIX requires at least one buffer
1648-
// for [writev], but possibly bufs.is_empty(), return an empty write.
1649-
// [writev]: https://pubs.opengroup.org/onlinepubs/9799919799/functions/writev.html
1650-
return Ok(0);
1648+
// POSIX requires at least one buffer for writev.
1649+
// https://pubs.opengroup.org/onlinepubs/9799919799/functions/writev.html
1650+
break 'slices empty;
16511651
}
16521652
bufs
16531653
}
@@ -1663,6 +1663,7 @@ pub(crate) macro limit_slices_mut($bufs:expr, $n:expr) {
16631663
'slices: {
16641664
let bufs: &mut [IoSliceMut<'_>] = $bufs;
16651665
let n: usize = $n;
1666+
super let empty = &mut [IoSliceMut::new(&mut [])];
16661667
// if bufs.len() > n || bufs.is_empty()
16671668
if core::intrinsics::unlikely(bufs.len().wrapping_sub(1) >= n) {
16681669
for (i, buf) in bufs.iter().enumerate() {
@@ -1671,10 +1672,9 @@ pub(crate) macro limit_slices_mut($bufs:expr, $n:expr) {
16711672
break 'slices &mut bufs[i..i + len];
16721673
}
16731674
}
1674-
// All buffers are empty. Since POSIX requires at least one buffer
1675-
// for [readv], but possibly bufs.is_empty(), return an empty read.
1676-
// [readv]: https://pubs.opengroup.org/onlinepubs/9799919799/functions/readv.html
1677-
return Ok(0);
1675+
// POSIX requires at least one buffer for readv.
1676+
// https://pubs.opengroup.org/onlinepubs/9799919799/functions/readv.html
1677+
break 'slices empty;
16781678
}
16791679
bufs
16801680
}

‎library/std/src/lib.rs‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,7 @@
315315
#![feature(staged_api)]
316316
#![feature(stmt_expr_attributes)]
317317
#![feature(strict_provenance_lints)]
318+
#![feature(super_let)]
318319
#![feature(thread_local)]
319320
#![feature(try_blocks)]
320321
#![feature(try_trait_v2)]

‎library/std/src/sys/net/connection/socket/windows.rs‎

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -335,9 +335,7 @@ impl Socket {
335335

336336
pub fn read_vectored(&self, bufs: &mut [IoSliceMut<'_>]) -> io::Result<usize> {
337337
// WSARecv requires at least one buffer.
338-
if bufs.is_empty() {
339-
return Ok(0);
340-
}
338+
let bufs = if bufs.is_empty() { &mut [IoSliceMut::new(&mut [])] } else { bufs };
341339

342340
let length = cmp::min(bufs.len(), u32::MAX as usize) as u32;
343341
let mut nread = 0;
@@ -429,9 +427,7 @@ impl Socket {
429427

430428
pub fn write_vectored(&self, bufs: &[IoSlice<'_>]) -> io::Result<usize> {
431429
// WSASend requires at least one buffer.
432-
if bufs.is_empty() {
433-
return Ok(0);
434-
}
430+
let bufs = if bufs.is_empty() { &[IoSlice::new(&[])] } else { bufs };
435431

436432
let length = cmp::min(bufs.len(), u32::MAX as usize) as u32;
437433
let mut nwritten = 0;

0 commit comments

Comments
(0)

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