diff --git a/library/std/src/process.rs b/library/std/src/process.rs index 321b68b3225ad..e8367fe8bdf3a 100644 --- a/library/std/src/process.rs +++ b/library/std/src/process.rs @@ -1296,6 +1296,12 @@ impl<'a> ExactSizeIterator for CommandArgs<'a> { } } +const fn assert_send() {} +const fn assert_sync() {} + +const _: () = assert_send::>(); +const _: () = assert_sync::>(); + /// An iterator over the command environment variables. /// /// This struct is created by diff --git a/library/std/src/sys/process/unix/common/cstring_array.rs b/library/std/src/sys/process/unix/common/cstring_array.rs index 1c840a85df9ba..c747b4363b67c 100644 --- a/library/std/src/sys/process/unix/common/cstring_array.rs +++ b/library/std/src/sys/process/unix/common/cstring_array.rs @@ -91,6 +91,11 @@ pub struct CStringIter<'a> { iter: crate::slice::Iter<'a, *const c_char>, } +// SAFETY: `CStringIter` is basically just a `slice::Iter<&'a CStr>` +unsafe impl Send for CStringIter<'_> {} +// SAFETY: `CStringIter` is basically just a `slice::Iter<&'a CStr>` +unsafe impl Sync for CStringIter<'_> {} + impl<'a> Iterator for CStringIter<'a> { type Item = &'a CStr; fn next(&mut self) -> Option<&'a CStr> {