pub trait Classify {
// Required method
fn kind(&self) -> FailureKind;
}Expand description
Implemented by every crate::Publisher::Error and OutboxStore::Error
(reliar-outbox) so a dispatcher can decide retry vs. dead without a downcast. Carried by
the error type, not by the publisher: the error value is what crosses a JoinSet boundary
into the dispatcher, so it must carry its own verdict (ADR 0008).
use reliar_core::{Classify, FailureKind};
#[derive(Debug)]
enum MyPublishError {
Timeout,
PayloadTooLarge,
}
impl Classify for MyPublishError {
fn kind(&self) -> FailureKind {
match self {
Self::Timeout => FailureKind::Transient,
Self::PayloadTooLarge => FailureKind::Permanent,
}
}
}
assert_eq!(MyPublishError::Timeout.kind(), FailureKind::Transient);Required Methods§
Sourcefn kind(&self) -> FailureKind
fn kind(&self) -> FailureKind
Whether the failure this error represents can succeed on retry.
use reliar_core::{Classify, FailureKind};
#[derive(Debug)]
struct TimedOut;
impl Classify for TimedOut {
fn kind(&self) -> FailureKind {
FailureKind::Transient
}
}
assert_eq!(TimedOut.kind(), FailureKind::Transient);Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".