unix_exec_output_catcher/
error.rs

1//! Contains all errors that can happen in this library.
2
3use derive_more::Display;
4use std::error::Error;
5
6/// Short for U(nix) E(xec) C(atch) O(utput)-Error.
7/// Combines all errors that can happen inside this library.
8#[derive(Debug, Display, Copy, Clone)]
9pub enum UECOError {
10    #[display(fmt = "pipe() failed with error code {}", errno)]
11    PipeFailed { errno: i32 },
12    #[display(fmt = "dup2() failed with error code {}", errno)]
13    Dup2Failed { errno: i32 },
14    #[display(fmt = "execvp() failed with error code {}", errno)]
15    ExecvpFailed { errno: i32 },
16    #[display(fmt = "waitpid() failed with error code {}", errno)]
17    WaitpidFailed { errno: i32 },
18    #[display(fmt = "read() failed with error code {}", errno)]
19    ReadFailed { errno: i32 },
20    #[display(fmt = "fork() failed with error code {}", errno)]
21    ForkFailed { errno: i32 },
22    #[display(fmt = "close() failed with error code {}", errno)]
23    CloseFailed { errno: i32 },
24    #[display(fmt = "The pipe is not yet marked as read end.")]
25    PipeNotMarkedAsReadEnd,
26    #[display(fmt = "The child was already dispatched/started.")]
27    ChildAlreadyDispatched,
28
29    /// For all other errors.
30    Unknown,
31}
32
33// IDE might show that display is not implemented but it gets implemented
34// during build by "derive_more" crate
35impl Error for UECOError {}