io_process/io.rs
1//! Process I/O requests and responses.
2
3use std::process::Output as SpawnOutput;
4
5use crate::{command::Command, status::SpawnStatus};
6
7/// The process I/O request enum, emitted by [coroutines] and
8/// processed by [runtimes].
9///
10/// Represents all the possible I/O requests that a stream coroutine
11/// can emit. Runtimes should be able to handle all variants.
12///
13/// [coroutines]: crate::coroutines
14/// [runtimes]: crate::runtimes
15#[derive(Debug)]
16pub enum ProcessIo {
17 /// I/O for spawning a process and waiting for its exit status.
18 ///
19 /// Input: command
20 ///
21 /// Output: spawn status
22 SpawnThenWait(Result<SpawnStatus, Command>),
23
24 /// I/O for spawning a process and waiting for its exit status and
25 /// any potential output from stdout or stderr.
26 ///
27 /// Input: command
28 ///
29 /// Output: spawn output
30 SpawnThenWaitWithOutput(Result<SpawnOutput, Command>),
31}