pub enum ClassifierError {
NotConfigured,
Rejected(String),
Transient {
retry_after: Option<Duration>,
},
Transport(String),
}Expand description
Classification failures.
NotConfigured sits on the error enum here,
unlike SendOutcome::NotConfigured and
PushOutcome::NotConfigured: a decision has no
“delivered but not configured” middle state, so an unwired port is an
error the caller matches, not an outcome it inspects.
Transient deliberately carries only retry_after, where
PushError::Transient also carries a message: with
no provider text of its own there is nothing to scrub, and provider
text belongs on Rejected and
Transport.
The two variants that carry provider text are sanitized in Display,
the same way TextModelError’s,
PushError’s and MailError’s
are (issue #235). What an adapter wraps is the provider’s own words,
and state is exactly the kind of value that rides back in them — a
triage module sends a customer’s note, and the provider’s 4xx quotes
it straight back. Display therefore runs it through
crate::logging::scrub_text; Debug still shows the raw string for
tests.
Variants§
NotConfigured
The port has no adapter — the venture did not wire it. Nothing is
wrong with the questions: a module may degrade, the way it degrades
on a NotConfigured mailer or text model.
Rejected(String)
The provider refused the request (a 4xx), or the adapter refused
the question set — validate_questions exists so that a
malformed set lands here and never on a panic. Not retryable
without a change.
Transient
A transient failure (a 5xx, a 429, a transport error): retry
later, and not before retry_after when the provider named one.
Carries no message — provider text belongs on
Rejected and Transport.
Transport(String)
The request never completed as a decision — the adapter could not reach the provider, or the answer did not survive the hop.
Implementations§
Source§impl ClassifierError
impl ClassifierError
Sourcepub fn retry_after(&self) -> Option<Duration>
pub fn retry_after(&self) -> Option<Duration>
How long the provider asked the caller to wait, where it said.
Trait Implementations§
Source§impl Clone for ClassifierError
impl Clone for ClassifierError
Source§impl Debug for ClassifierError
impl Debug for ClassifierError
Source§impl Display for ClassifierError
impl Display for ClassifierError
impl Eq for ClassifierError
Source§impl Error for ClassifierError
impl Error for ClassifierError
1.30.0 · 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()
Source§impl PartialEq for ClassifierError
impl PartialEq for ClassifierError
impl StructuralPartialEq for ClassifierError
Auto Trait Implementations§
impl Freeze for ClassifierError
impl RefUnwindSafe for ClassifierError
impl Send for ClassifierError
impl Sync for ClassifierError
impl Unpin for ClassifierError
impl UnsafeUnpin for ClassifierError
impl UnwindSafe for ClassifierError
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.