Skip to main content

RunProcessError

Enum RunProcessError 

Source
#[non_exhaustive]
pub enum RunProcessError {
#[non_exhaustive]
CancelledRun { invocation: Invocation, },
#[non_exhaustive]
UnrunnableCommand { source: RunCommandError, },
#[non_exhaustive]
UnreportableOutput { invocation: Invocation, source: SendError, }, }
Expand description

The error returned when a command cannot run an external program

The variants separate what a caller does about the failure. A command that was cancelled stops, a command whose program never ran reports the program, and a command whose output can no longer be reported has lost its presenter and ends.

A program that ran and ended without success is no failure of the run. The Execution then carries the status, and require_success turns a status that the caller cannot accept into an error of its own.

A later release can add variants, and it can add fields to a variant. Match with a wildcard arm, and bind the fields of a variant with ...

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

#[non_exhaustive]
CancelledRun

Cancellation stopped the program before it ended

Clawless killed the program, so the run has no exit status and no complete output. A command that treats cancellation as an orderly end matches this variant and returns without an error.

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
§invocation: Invocation

The command that was cancelled

§

#[non_exhaustive]
UnrunnableCommand

The program could not be run

No program answers to the name, the working directory does not exist, the operating system refused to start the program, or the run started and its result could not be collected. The message is the one of the underlying failure, because this layer knows nothing that the run does not already state.

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
§source: RunCommandError

The cause of the failure

§

#[non_exhaustive]
UnreportableOutput

The output of the program could not be reported

The presenter stopped listening while the program ran, so the run has no consumer left. The program itself was killed with the run.

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
§invocation: Invocation

The command whose output could not be reported

§source: SendError

The cause of the failure

Trait Implementations§

Source§

impl Debug for RunProcessError

Source§

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

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

impl Display for RunProcessError

Source§

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

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

impl Error for RunProcessError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where 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 T
where 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 T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

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

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

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

Source§

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.