tokio_childstream/commandext.rs
1use crate::ChildStream;
2use tokio::process::Command;
3
4/// Extend [tokio::process::Command] to enable spawning a child directly into a [ChildStream]
5pub trait CommandExt {
6 /// Spawn a child process and convert it into a [ChildStream] with `line_buffering` optionally enabled
7 ///
8 /// See [ChildStream] for a description of line-buffering.
9 fn spawn_stream(&mut self, line_buffering: bool) -> std::io::Result<ChildStream>;
10}
11
12impl CommandExt for Command {
13 fn spawn_stream(&mut self, line_buffering: bool) -> std::io::Result<ChildStream> {
14 use std::process::Stdio;
15
16 self.stdout(Stdio::piped())
17 .stderr(Stdio::piped())
18 .spawn()
19 .map(|c| ChildStream::new(c, line_buffering))
20 }
21}