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
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
impl Debug for DispatchError
Source§impl Display for DispatchError
impl Display for DispatchError
Source§impl Error for DispatchError
impl Error for DispatchError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()