pub enum ArticleFailureKind {
NotFound,
ServerDown,
AuthFailed,
PermissionDenied,
DecodeError,
Timeout,
ConnectionClosed,
Protocol,
Other,
}Expand description
Why an article failed. Drives retry decisions, hopeless tracking, and circuit-breaker logic.
Variants§
NotFound
430 — article not present on this server. Could be retention drift
or never posted; try other servers.
ServerDown
50x or service unavailable — transient server-side issue. Try
another server; circuit-break this one if it persists.
AuthFailed
481 / 482 — authentication failed for this account on this server.
Don’t keep retrying with the same credentials.
PermissionDenied
403 / explicit forbidden — permanent rejection for this account on
this server. Functionally identical to AuthFailed for retry purposes
but distinguished for diagnostics.
DecodeError
yEnc decode failure or file-assembly mismatch. Could be corruption on this server (try another) or genuine corruption on every server.
Timeout
Read/write timeout. Transient — retry on the same or another server.
ConnectionClosed
TCP socket closed mid-transfer (RST, EOF, etc.).
Protocol
NNTP protocol violation or unexpected response shape.
Other
Catch-all when classification isn’t possible at the emit site.
Implementations§
Source§impl ArticleFailureKind
impl ArticleFailureKind
Sourcepub fn is_per_server(self) -> bool
pub fn is_per_server(self) -> bool
True if this failure is specific to the server that produced it — the article may still be obtainable from another provider.
Sourcepub fn counts_toward_hopeless(self) -> bool
pub fn counts_toward_hopeless(self) -> bool
True if the failure suggests the article is gone everywhere once every server has been tried (hopeless-tracker should count it).
Sourcepub fn should_break_server(self) -> bool
pub fn should_break_server(self) -> bool
True if this server is unlikely to recover within the lifetime of the current download — circuit-breaker hint.
Trait Implementations§
Source§impl Clone for ArticleFailureKind
impl Clone for ArticleFailureKind
Source§fn clone(&self) -> ArticleFailureKind
fn clone(&self) -> ArticleFailureKind
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ArticleFailureKind
impl Debug for ArticleFailureKind
Source§impl Hash for ArticleFailureKind
impl Hash for ArticleFailureKind
Source§impl PartialEq for ArticleFailureKind
impl PartialEq for ArticleFailureKind
impl Copy for ArticleFailureKind
impl Eq for ArticleFailureKind
impl StructuralPartialEq for ArticleFailureKind
Auto Trait Implementations§
impl Freeze for ArticleFailureKind
impl RefUnwindSafe for ArticleFailureKind
impl Send for ArticleFailureKind
impl Sync for ArticleFailureKind
impl Unpin for ArticleFailureKind
impl UnsafeUnpin for ArticleFailureKind
impl UnwindSafe for ArticleFailureKind
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§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.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more