Enum fun_run::CmdError

source ·
pub enum CmdError {
    SystemError(String, Error),
    NonZeroExitNotStreamed(NamedOutput),
    NonZeroExitAlreadyStreamed(NamedOutput),
}
Expand description

Who says (Command) errors can’t be fun?

Fun run errors include all the info a user needs to debug, like the name of the command that failed and any outputs (like error messages in stderr).

Fun run errors don’t overwhelm end users, so by default if stderr is already streamed the output won’t be duplicated.

Enjoy if you want, skip if you don’t. Fun run errors are not mandatory.

Error output formatting is unstable

Variants§

§

SystemError(String, Error)

§

NonZeroExitNotStreamed(NamedOutput)

§

NonZeroExitAlreadyStreamed(NamedOutput)

Implementations§

source§

impl CmdError

source

pub fn name(&self) -> Cow<'_, str>

Returns a display representation of the command that failed

Example:

use fun_run::CommandWithName;
use std::process::Command;

let result = Command::new("cat")
    .arg("mouse.txt")
    .named_output();

match result {
    Ok(_) => unimplemented!(),
    Err(error) => assert_eq!(error.name().to_string(), "cat mouse.txt")
}

Trait Implementations§

source§

impl Debug for CmdError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for CmdError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<CmdError> for NamedOutput

source§

fn from(value: CmdError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToString for Twhere T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.