Skip to main content

HttpError

Struct HttpError 

Source
#[non_exhaustive]
pub struct HttpError(/* private fields */);
Expand description

HTTP transport error reported by the underlying HTTP client.

The inner third-party error type is private; callers diagnose the failure via the accessor methods, all of which return primitive types so this crate can swap or bump the underlying HTTP client without breaking the public API.

Implementations§

Source§

impl HttpError

Source

pub fn is_timeout(&self) -> bool

true if the request timed out before a response was received.

Source

pub fn is_connect(&self) -> bool

true if the underlying connection could not be established (DNS failure, TCP refused, TLS handshake failure, etc.).

Source

pub fn is_builder(&self) -> bool

true if the error originated in the request builder (URL parse failure, invalid header construction at build time, etc.).

Source

pub fn is_redirect(&self) -> bool

true if the error is a redirect-loop or too-many-redirects failure.

Source

pub fn is_status(&self) -> bool

true if the error originated from a non-success HTTP status.

Source

pub fn is_request(&self) -> bool

true if the error happened while sending the request body.

Source

pub fn is_body(&self) -> bool

true if the error happened while receiving / decoding the response body.

Source

pub fn is_decode(&self) -> bool

true if the response body could not be decoded as the requested representation (e.g. JSON parse failure inside the transport layer).

Source

pub fn status(&self) -> Option<u16>

HTTP status code if the error came from a non-success response; None for transport-level failures (timeout, connection refused, etc.).

Source

pub fn url(&self) -> Option<String>

URL the request was sent to, if known. Returned as an owned String to avoid leaking the underlying transport’s Url type into this crate’s public API.

Source

pub fn kind(&self) -> HttpErrorKind

Classify the error into a single category (bd:JMAP-6r7c.34).

The 8 is_* boolean accessors are useful when a caller wants to test for a specific category, but they leave the caller writing a chained-if-else dispatch with undocumented mutual relationships (“can is_status and is_decode both be true?”). This method returns a single HttpErrorKind so a caller can match on it once.

Precedence (highest first) when multiple predicates could arguably apply: Timeout, Connect, Redirect, Status, RequestBody, ResponseBody, Decode, Builder, Other. Status takes precedence over body/decode because reqwest sets is_status precisely when the failure is “the HTTP server returned a non-success status code”; in that case the body or decode flag may also be set, but the most-actionable classification for a caller is the status code itself.

This method does not return retriability advice — the same Status(429) may be retriable or fatal depending on the Retry-After header value, and the same Connect may mean “DNS not yet warm” (retry) or “host is down” (give up). Make the retriability decision at the call site, using the kind as input.

Trait Implementations§

Source§

impl Debug for HttpError

Source§

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

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

impl Display for HttpError

Source§

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

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

impl Error for HttpError

Source§

fn source(&self) -> Option<&(dyn StdError + '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

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