Trait ChildExt

Source
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§

Source

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());
Source

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.

Implementations on Foreign Types§

Source§

impl ChildExt for Child

Source§

fn controlled(&mut self) -> impl Control<Result = ExitStatus> + Debug

Source§

fn controlled_with_output(self) -> impl Control<Result = Output> + Debug

Implementors§