Skip to main content

DispatchError

Enum DispatchError 

Source
pub enum DispatchError {
    NoCommand,
    Unknown {
        group: String,
        command: String,
    },
    Arg(ArgError),
    Plan(PlanError),
    Transport(Box<dyn Error + Send + Sync>),
}
Expand description

Why an operation the user named did not run.

The transport’s own error is the source of Self::Transport rather than a variant of its own, so this enum does not grow a type parameter for the client and an adopter’s error type can absorb it whole.

Variants§

§

NoCommand

§

Unknown

Fields

§group: String
§command: String
§

Arg(ArgError)

§

Plan(PlanError)

§

Transport(Box<dyn Error + Send + Sync>)

The client refused the request or never got an answer, carrying the error the client itself returned.

What the box costs is worth saying out loud: this crate cannot tell whether the request left, and on a write that is the difference between an operation that did nothing and one that may have done everything. Only an adapter can read that out of its own client’s error, so the reading belongs above the seam — the position RecorderError states for a scripted failure, and the same one here. A failure nobody has classified is one that may have arrived, which is the only safe default to hold it at.

Reading it is not shut off, though. The box holds C::Error exactly as the client returned it, so downcast_ref recovers it — and the type a catch site names is the error type the adopter’s own seam fixes, not whichever client the call went through, because &dyn SyncClient<Error = E> fixes E for every client behind it. A caller who wants no box at all builds the request with Plan and sends it through the client’s own send. docs/client.md shows both.

Trait Implementations§

Source§

impl Debug for DispatchError

Source§

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

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

impl Display for DispatchError

Source§

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

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

impl Error for DispatchError

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
Source§

impl From<ArgError> for DispatchError

Source§

fn from(source: ArgError) -> Self

Converts to this type from the input type.
Source§

impl From<PlanError> for DispatchError

Source§

fn from(source: PlanError) -> Self

Converts to this type from the input type.

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.