CommandExt::before_exec: deprecate safety in edition 2024
This commit is contained in:
parent
fbce03b195
commit
5ae03863de
3 changed files with 39 additions and 3 deletions
|
@ -109,13 +109,21 @@ pub trait CommandExt: Sealed {
|
|||
/// Schedules a closure to be run just before the `exec` function is
|
||||
/// invoked.
|
||||
///
|
||||
/// This method is stable and usable, but it should be unsafe. To fix
|
||||
/// that, it got deprecated in favor of the unsafe [`pre_exec`].
|
||||
/// `before_exec` used to be a safe method, but it needs to be unsafe since the closure may only
|
||||
/// perform operations that are *async-signal-safe*. Hence it got deprecated in favor of the
|
||||
/// unsafe [`pre_exec`]. Meanwhile, Rust gained the ability to make an existing safe method
|
||||
/// fully unsafe in a new edition, which is how `before_exec` became `unsafe`. It still also
|
||||
/// remains deprecated; `pre_exec` should be used instead.
|
||||
///
|
||||
/// [`pre_exec`]: CommandExt::pre_exec
|
||||
#[stable(feature = "process_exec", since = "1.15.0")]
|
||||
#[deprecated(since = "1.37.0", note = "should be unsafe, use `pre_exec` instead")]
|
||||
fn before_exec<F>(&mut self, f: F) -> &mut process::Command
|
||||
#[cfg_attr(bootstrap, rustc_deprecated_safe_2024)]
|
||||
#[cfg_attr(
|
||||
not(bootstrap),
|
||||
rustc_deprecated_safe_2024(audit_that = "the closure is async-signal-safe")
|
||||
)]
|
||||
unsafe fn before_exec<F>(&mut self, f: F) -> &mut process::Command
|
||||
where
|
||||
F: FnMut() -> io::Result<()> + Send + Sync + 'static,
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue