Skip to main content

RerankError

Enum RerankError 

Source
pub enum RerankError {
    HttpError(Error),
    JsonError(Error),
    UrlError(ParseError),
    ResponseError(String),
    ProviderError(String),
    ProviderResponse(ProviderResponseError),
}
Expand description

Errors returned by reranking models.

Inspect provider failures with Self::provider_response_body, Self::provider_response_json, and Self::provider_response_status.

Variants§

§

HttpError(Error)

Http error (e.g.: connection error, timeout, etc.)

§

JsonError(Error)

Json error (e.g.: serialization, deserialization)

§

UrlError(ParseError)

URL construction or parsing failed while preparing a provider request.

§

ResponseError(String)

Error parsing the reranking response

§

ProviderError(String)

Error returned by the reranking model provider

§

ProviderResponse(ProviderResponseError)

Raw error response preserved from the reranking model provider

Implementations§

Source§

impl RerankError

Source

pub fn from_http_response(status: StatusCode, body: impl Into<String>) -> Self

Builds an error from a captured HTTP status and raw response body, routing it so the provider_response_* helpers stay useful.

This is the single funnel every HTTP-error path should use instead of flattening a status and body into a ProviderError(String):

Either way the raw body is kept verbatim and the status stays recoverable through Self::provider_response_status. Read the response body exactly once and hand it here for both branches.

Source

pub fn from_http_response_with_request_id( status: StatusCode, body: impl Into<String>, provider_request_id: Option<String>, ) -> Self

Self::from_http_response for paths that captured the provider’s transport request id alongside the response (rig#2314).

Unlike the metadata-less funnel, a non-success status is preserved as Self::ProviderResponse too — http_client’s error type has no slot for provider metadata, and the id the provider reported on a failed call is exactly what support asks for. Classification therefore follows the code path (did this call site capture transport metadata?), never the presence of the header on a particular response, so a given provider’s errors classify consistently. The status stays recoverable through Self::provider_response_status and the id through Self::provider_request_id.

Source

pub fn with_response_headers(self, headers: Option<Box<HeaderMap>>) -> Self

Attaches the response’s headers to an error just built by one of the from_http_response* funnels, so rate-limit metadata (Retry-After, x-ratelimit-*) survives onto it (rig#2210).

This is a separate step rather than a funnel parameter because the funnels’ classification is fixed by the call path (does this provider have a request-id contract?), while header capture depends only on whether the transport handed the response back. Both routes can therefore carry headers: Self::ProviderResponse stores them alongside the request id, and a non-success Self::HttpError is upgraded in place to http_client::Error::InvalidStatusCodeWithDetails, which displays identically to the header-less variant.

Passing None leaves the error untouched, as does calling this on a variant with no response to annotate. An error that already captured headers keeps the ones it has: the first capture is the one that saw the response, so this never overwrites.

Source

pub fn from_provider_body(body: impl Into<String>) -> Self

Preserves a raw provider error body that has no HTTP status.

Use this for non-HTTP transports (gRPC / SDK clients such as AWS Bedrock, Vertex AI, or the gRPC Gemini client) where the provider returns an error payload but no http::StatusCode is available. The body is preserved as Self::ProviderResponse with status == None, so Self::provider_response_body still surfaces it while Self::provider_response_status returns None.

Source

pub fn provider_response_body(&self) -> Option<&str>

Returns the raw provider response body when available.

This is available for:

  • Self::ProviderResponse using its preserved body.
  • Self::HttpError when it wraps an HTTP non-success response that carries a body.

Returns None for any other variant — for example a Rig-generated ProviderError diagnostic, or a failure from a transport with no provider response body to preserve. An empty preserved body is reported as Some("") (the provider returned no payload), which is distinct from None; note that Self::provider_response_json maps that same empty body to Ok(None).

Source

pub fn provider_response_json(&self) -> Result<Option<Value>, Error>

Parses the provider response body as JSON.

Returns:

  • Ok(Some(value)) when a body is present and valid JSON.
  • Ok(None) when no provider response body is available.
  • Err(error) when a body is present but isn’t valid JSON.
Source

pub fn provider_response_status(&self) -> Option<StatusCode>

Returns the HTTP status code when this error preserves one, either from a non-success HTTP response, from a preserved provider response, or from a 2xx error envelope.

Warning: this can return a 2xx status. Some providers send an error envelope alongside a success status, which Rig preserves via Self::ProviderResponse. Callers must not infer failure from the status code alone — the existence of this error already means the call failed. Returns None for non-HTTP transports (gRPC / SDK clients) and for variants that carry no provider response.

Source

pub fn provider_request_id(&self) -> Option<&str>

Returns the provider’s transport request id for the failed call, when the capture path preserved one (rig#2314) — the id provider support asks for. None for providers that report none, for paths that captured no transport metadata, and for errors with no provider response at all.

Source

pub fn provider_response_headers(&self) -> Option<&HeaderMap>

Returns the response’s headers when the capture path preserved them (rig#2210) — the rate-limit metadata (Retry-After, x-ratelimit-*) a caller needs to back off correctly:

fn backoff(error: &CompletionError) -> Option<Duration> {
    let seconds = error
        .provider_response_headers()?
        .get(http::header::RETRY_AFTER)?
        .to_str()
        .ok()?
        .parse()
        .ok()?;
    Some(Duration::from_secs(seconds))
}

Returns None when no headers were captured: non-HTTP transports (gRPC / SDK clients), Rig-generated diagnostics, errors funnelled from only a status and body (e.g. via Self::from_http_response), and transports that report a non-success status without preserving them. None therefore means “not captured”, never “the response had no headers”.

Trait Implementations§

Source§

impl Debug for RerankError

Source§

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

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

impl Display for RerankError

Source§

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

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

impl Error for RerankError

Source§

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

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<Error> for RerankError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for RerankError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<ParseError> for RerankError

Source§

fn from(source: ParseError) -> Self

Converts to this type from the input type.

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> 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> 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> 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

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

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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> ToStringFallible for T
where T: Display,

Source§

fn try_to_string(&self) -> Result<String, TryReserveError>

ToString::to_string, but without panic on OOM.

Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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> WasmCompatSend for T
where T: Send,

Source§

impl<T> WasmCompatSync for T
where T: Sync,

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