about summary refs log tree commit diff
path: root/library/std/src/sys/pal/wasi/thread.rs
diff options
context:
space:
mode:
authorJosh Triplett <josh@joshtriplett.org>2025-08-10 14:25:43 -0700
committerJosh Triplett <josh@joshtriplett.org>2025-08-16 05:28:31 -0700
commit1ae4a0cc3487f28b29f36afe8056535afad21e7b (patch)
treea408ec3e10388ca37142ab6456a8ec7b83b141c6 /library/std/src/sys/pal/wasi/thread.rs
parent3507a749b365aae4eefa96ab700a9315d3280ee7 (diff)
downloadrust-1ae4a0cc3487f28b29f36afe8056535afad21e7b.tar.gz
rust-1ae4a0cc3487f28b29f36afe8056535afad21e7b.zip
library: Migrate from `cfg_if` to `cfg_select`
Migrate the standard library from using the external `cfg_if` crate to
using the now-built-in `cfg_select` macro.

This does not yet eliminate the dependency from
`library/std/Cargo.toml`, because while the standard library itself no
longer uses `cfg_if`, it also incorporates the `backtrace` crate, which
does.

Migration assisted by the following vim command (after selecting the
full `cfg_if!` invocation):

```
'<,'>s/\(cfg_if::\)\?cfg_if/cfg_select/ | '<,'>s/^\( *\)} else {/\1}\r\1_ => {/c | '<,'>s/^\( *\)} else if #\[cfg(\(.*\))\] /\1}\r\1\2 => /e | '<,'>s/if #\[cfg(\(.*\))\] {/\1 => {/e
```

This is imperfect, but substantially accelerated the process. This
prompts for confirmation on the `} else {` since that can also appear
inside one of the arms. This also requires manual intervention to handle
any multi-line conditions.
Diffstat (limited to 'library/std/src/sys/pal/wasi/thread.rs')
-rw-r--r--library/std/src/sys/pal/wasi/thread.rs28
1 files changed, 15 insertions, 13 deletions
diff --git a/library/std/src/sys/pal/wasi/thread.rs b/library/std/src/sys/pal/wasi/thread.rs
index 4755e2ef5da..e062b49bd7a 100644
--- a/library/std/src/sys/pal/wasi/thread.rs
+++ b/library/std/src/sys/pal/wasi/thread.rs
@@ -5,8 +5,8 @@ use crate::num::NonZero;
 use crate::time::{Duration, Instant};
 use crate::{io, mem};
 
-cfg_if::cfg_if! {
-    if #[cfg(target_feature = "atomics")] {
+cfg_select! {
+    target_feature = "atomics" => {
         use crate::cmp;
         use crate::ptr;
         use crate::sys::os;
@@ -62,7 +62,8 @@ cfg_if::cfg_if! {
                 debug_assert_eq!(ret, 0);
             }
         }
-    } else {
+    }
+    _ => {
         pub struct Thread(!);
     }
 }
@@ -71,8 +72,8 @@ pub const DEFAULT_MIN_STACK_SIZE: usize = 1024 * 1024;
 
 impl Thread {
     // unsafe: see thread::Builder::spawn_unchecked for safety requirements
-    cfg_if::cfg_if! {
-        if #[cfg(target_feature = "atomics")] {
+    cfg_select! {
+        target_feature = "atomics" => {
             pub unsafe fn new(stack: usize, _name: Option<&str>, p: Box<dyn FnOnce()>) -> io::Result<Thread> {
                 let p = Box::into_raw(Box::new(p));
                 let mut native: libc::pthread_t = unsafe { mem::zeroed() };
@@ -119,7 +120,8 @@ impl Thread {
                     ptr::null_mut()
                 }
             }
-        } else {
+        }
+        _ => {
             pub unsafe fn new(_stack: usize, _name: Option<&str>, _p: Box<dyn FnOnce()>) -> io::Result<Thread> {
                 crate::sys::unsupported()
             }
@@ -180,14 +182,15 @@ impl Thread {
     }
 
     pub fn join(self) {
-        cfg_if::cfg_if! {
-            if #[cfg(target_feature = "atomics")] {
+        cfg_select! {
+            target_feature = "atomics" => {
                 let id = mem::ManuallyDrop::new(self).id;
                 let ret = unsafe { libc::pthread_join(id, ptr::null_mut()) };
                 if ret != 0 {
                     rtabort!("failed to join thread: {}", io::Error::from_raw_os_error(ret));
                 }
-            } else {
+            }
+            _ => {
                 self.0
             }
         }
@@ -199,14 +202,13 @@ pub(crate) fn current_os_id() -> Option<u64> {
 }
 
 pub fn available_parallelism() -> io::Result<NonZero<usize>> {
-    cfg_if::cfg_if! {
-        if #[cfg(target_feature = "atomics")] {
+    cfg_select! {
+        target_feature = "atomics" => {
             match unsafe { libc::sysconf(libc::_SC_NPROCESSORS_ONLN) } {
                 -1 => Err(io::Error::last_os_error()),
                 cpus => NonZero::new(cpus as usize).ok_or(io::Error::UNKNOWN_THREAD_COUNT),
             }
-        } else {
-            crate::sys::unsupported()
         }
+        _ => crate::sys::unsupported(),
     }
 }