#[non_exhaustive]pub enum SessionError<E> {
Codec(E),
Cancelled(StopReason),
Finished,
Protocol(ProtocolViolation),
Unsupported(UnsupportedMedia),
Limit(MediaLimitExceeded),
}Expand description
Every session error is terminal for the session except Codec errors a
backend documents as retryable validation.
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.
Codec(E)
The codec or container implementation failed (malformed input, backend error).
Cancelled(StopReason)
The pulse tripped.
Finished
Called again after a terminal error.
Protocol(ProtocolViolation)
The protocol was broken.
Unsupported(UnsupportedMedia)
A valid request this implementation does not support.
Limit(MediaLimitExceeded)
A structural limit was exceeded.
Implementations§
Source§impl<E> SessionError<E>
impl<E> SessionError<E>
Sourcepub fn map_codec<F>(self, f: impl FnOnce(E) -> F) -> SessionError<F>
pub fn map_codec<F>(self, f: impl FnOnce(E) -> F) -> SessionError<F>
Convert the implementation error, keeping every other variant.
Trait Implementations§
Source§impl<E: Debug> Debug for SessionError<E>
impl<E: Debug> Debug for SessionError<E>
Source§impl<E: Display> Display for SessionError<E>
impl<E: Display> Display for SessionError<E>
Source§impl<E: Error + 'static> Error for SessionError<E>
impl<E: Error + 'static> Error for SessionError<E>
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
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
fn description(&self) -> &str
👎Deprecated since 1.42.0:
use the Display impl or to_string()
Auto Trait Implementations§
impl<E> Freeze for SessionError<E>where
E: Freeze,
impl<E> RefUnwindSafe for SessionError<E>where
E: RefUnwindSafe,
impl<E> Send for SessionError<E>where
E: Send,
impl<E> Sync for SessionError<E>where
E: Sync,
impl<E> Unpin for SessionError<E>where
E: Unpin,
impl<E> UnsafeUnpin for SessionError<E>where
E: UnsafeUnpin,
impl<E> UnwindSafe for SessionError<E>where
E: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<E> CodecErrorExt for Ewhere
E: Error + 'static,
impl<E> CodecErrorExt for Ewhere
E: Error + 'static,
Source§fn unsupported_operation(&self) -> Option<&UnsupportedOperation>
fn unsupported_operation(&self) -> Option<&UnsupportedOperation>
Find an
UnsupportedOperation in this error’s cause chain.Source§fn limit_exceeded(&self) -> Option<&LimitExceeded>
fn limit_exceeded(&self) -> Option<&LimitExceeded>
Find a
LimitExceeded in this error’s cause chain.Source§fn codec_error(&self) -> Option<&CodecError>
fn codec_error(&self) -> Option<&CodecError>
Recover the shared
CodecError envelope from this error’s chain — after
any erasure (Box<dyn Error>, anyhow::Error, a mapped wrapper) — by
downcasting to the concrete At<CodecError> (or a bare CodecError),
tolerating a single Box layer (Box<At<CodecError>> etc., so a codec may
use an 8-byte boxed type Error). It gives the
category and the originating
codec name, so a consumer can tell codecs apart
without naming any codec-specific type. Read moreSource§fn find_cause<T>(&self) -> Option<&T>where
T: Error + 'static,
fn find_cause<T>(&self) -> Option<&T>where
T: Error + 'static,
Find a cause of arbitrary type
T in this error’s cause chain.Source§fn error_category(&self) -> Option<ErrorCategory>
fn error_category(&self) -> Option<ErrorCategory>
Shortcut for
codec_error().map(CodecError::category) — the
coarse axis app/lib code routes on.