use std::fmt::Debug;
use std::fmt::Display;
use crate::CommandDisplay;
#[cfg(doc)]
use crate::CommandExt;
#[cfg(doc)]
use crate::OutputError;
pub struct ExecError {
pub(crate) command: Box<dyn CommandDisplay>,
pub(crate) inner: std::io::Error,
}
impl Debug for ExecError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("ExecError")
.field("program", &self.command.program())
.field("inner", &self.inner)
.finish()
}
}
impl Display for ExecError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "Failed to execute `{}`: {}", self.command, self.inner)
}
}
impl std::error::Error for ExecError {}