Skip to main content

StatusRow

Enum StatusRow 

Source
#[non_exhaustive]
pub enum StatusRow {
Show 13 variants Unauthorized, Forbidden, NotFound, RequestTimeout, ConnectionReset, TooManyRequests, ContextLength, BadRequest, InternalServerError, ServiceUnavailable, ContentFilter, ExpiredCredential, QuotaExhausted,
}
Expand description

One wire failure and the error kind an adapter must map it onto.

Growable: match with a _ arm.

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.
§

Unauthorized

HTTP 401 must become Authentication — not Authorization. The key is wrong, and no other candidate configured with the same key will do better.

§

Forbidden

HTTP 403 must become Authorization. The key is fine and this model is not entitled to it, which is a different thing to tell an operator.

§

NotFound

HTTP 404 must become ModelNotFound, so the router moves to a candidate that exists instead of retrying a name that does not.

§

RequestTimeout

HTTP 408 must become Timeout. The provider is saying the deadline passed on its side; it means the same as the deadline passing on ours.

§

ConnectionReset

A socket that dies mid-call must become Timeout or Transport — never a server error, and never something fatal.

§

TooManyRequests

HTTP 429 must become RateLimited, carrying whatever delay the response advertised.

§

ContextLength

An HTTP 400 the provider describes as a context-length problem must become ContextOverflow, so the runtime shrinks the prompt instead of re-sending it.

§

BadRequest

An HTTP 400 that is genuinely a bad request must become InvalidRequest: our request is wrong and every other provider will reject it too.

§

InternalServerError

HTTP 500 must become Server.

§

ServiceUnavailable

HTTP 503 must become Server as well: a busy provider is retryable, not fatal.

§

ContentFilter

A safety filter must surface as ContentFilter or Refusal — as a kind, or as a response finishing that way — never as a server error a policy layer would retry.

§

ExpiredCredential

The vendor’s expired credential signal must become CredentialExpired, not Authentication.

Most vendors report it with the same 401 they use for a wrong key, so only the body tells them apart and only the adapter knows the shape. Getting it wrong strands a caller that holds a refresher: it is told the key is bad when refreshing would have fixed the call.

§

QuotaExhausted

The vendor’s quota or billing signal must become QuotaExhausted, not RateLimited.

Several vendors report an exhausted quota or an empty credit balance with HTTP 429, the same status as a rate limit. An adapter that reads the status alone makes the runtime sleep on a delay that will not help, burning the turn’s deadline for a balance only a human can refill.

Implementations§

Source§

impl StatusRow

Source

pub const ALL: [StatusRow; 13]

Every per-status row, in the order a run reports them.

Source

pub const fn as_str(self) -> &'static str

Stable snake-case label, unique across every Check.

Source

pub const fn http_status(self) -> Option<u16>

The HTTP status this row puts on the wire, when it is one.

ConnectionReset has none — the point is that no status ever arrives — and ContentFilter leaves the framing to the vendor.

Source

pub const fn scenario(self) -> Option<Scenario>

The scenario a fixture mounts for this row.

ConnectionReset returns None: the suite owns that one, because a reset is produced by a socket rather than by a mock response.

Source

pub const fn expected_kinds(self) -> &'static [&'static str]

The ProviderErrorKind labels this row accepts.

One entry for every row but the two documented at the module level.

Source

pub const fn expected_retry_class(self) -> RetryClass

The RetryClass the kind this row requires must carry.

Every row has exactly one, including the two that accept two kinds: timeout and transport are both Retry, and content_filter and refusal are both Fatal. The class is asserted separately from the kind because they can drift apart, and it is the class the policy layer actually acts on.

Source

pub const fn wire_description(self) -> &'static str

How a failure message names what was put on the wire.

Source

pub const fn accepts_finish(self, finish: FinishReason) -> bool

Returns true when a successful response finishing this way is an acceptable answer for this row.

Only the content-filter row has one: every other row exists because a call failed, and a response where a failure was required is a defect.

Trait Implementations§

Source§

impl Clone for StatusRow

Source§

fn clone(&self) -> StatusRow

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for StatusRow

Source§

impl Debug for StatusRow

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Display for StatusRow

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Eq for StatusRow

Source§

impl Hash for StatusRow

Source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for StatusRow

Source§

fn cmp(&self, other: &StatusRow) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 (const: unstable) · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 (const: unstable) · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 (const: unstable) · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

fn clamp_to<R>(self, range: R) -> Self
where Self: Sized, R: ClampBounds<Self>,

🔬This is a nightly-only experimental API. (clamp_to)
Restrict a value to a certain range. Read more
Source§

impl PartialEq for StatusRow

Source§

fn eq(&self, other: &StatusRow) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl PartialOrd for StatusRow

Source§

fn partial_cmp(&self, other: &StatusRow) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 (const: unstable) · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 (const: unstable) · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 (const: unstable) · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 (const: unstable) · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl StructuralPartialEq for StatusRow

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AsOut<T> for T
where T: Copy,

Source§

fn as_out(&mut self) -> Out<'_, T>

Returns an out reference to self.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more