lightweight_command_runner/
command_runner.rs

1// ---------------- [ File: command-runner/src/command_runner.rs ]
2crate::ix!();
3
4pub trait CommandRunner: Send + Sync {
5
6    fn run_command(&self, cmd: tokio::process::Command) 
7        -> tokio::task::JoinHandle<Result<std::process::Output, io::Error>>;
8}
9
10pub struct DefaultCommandRunner;
11
12impl CommandRunner for DefaultCommandRunner {
13
14    fn run_command(&self, cmd: tokio::process::Command) 
15        -> tokio::task::JoinHandle<Result<std::process::Output, io::Error>> 
16    {
17        tokio::spawn(async move {
18            let mut cmd = cmd;
19            cmd.output().await
20        })
21    }
22}