pub trait ChildExt: Sealed {
// Required methods
fn controlled(&mut self) -> impl Control<Result = ExitStatus> + Debug;
fn controlled_with_output(self) -> impl Control<Result = Output> + Debug;
}
Expand description
Extensions to Child
for easily terminating processes.
For more information, see the module-level documentation.
Required Methods§
Sourcefn controlled(&mut self) -> impl Control<Result = ExitStatus> + Debug
fn controlled(&mut self) -> impl Control<Result = ExitStatus> + Debug
Creates an instance of Control
that yields ExitStatus
for this
process.
This method parallels Child::wait
but allows setting limits on the
process.
§Examples
use std::process::Command;
use std::time::Duration;
use process_control::ChildExt;
use process_control::Control;
let exit_status = Command::new("echo")
.spawn()?
.controlled()
.time_limit(Duration::from_secs(1))
.terminate_for_timeout()
.wait()?
.expect("process timed out");
assert!(exit_status.success());
Sourcefn controlled_with_output(self) -> impl Control<Result = Output> + Debug
fn controlled_with_output(self) -> impl Control<Result = Output> + Debug
Creates an instance of Control
that yields Output
for this
process.
This method parallels Child::wait_with_output
but allows setting
limits on the process.
§Examples
use std::process::Command;
use std::process::Stdio;
use std::time::Duration;
use process_control::ChildExt;
use process_control::Control;
let message = "foobar";
let output = Command::new("echo")
.arg(message)
.stdout(Stdio::piped())
.spawn()?
.controlled_with_output()
.time_limit(Duration::from_secs(1))
.terminate_for_timeout()
.wait()?
.expect("process timed out");
assert!(output.status.success());
assert_eq!(message.as_bytes(), &output.stdout[..message.len()]);
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.