pub struct ApiError<E> {
pub status: u16,
pub headers: HeaderMap,
pub body: String,
pub typed: Option<E>,
pub parse_error: Option<String>,
}Expand description
Envelope for an API response we received but couldn’t (or didn’t) treat as success.
ApiError<E> is returned whenever the server actually responded — whether the
status was non-2xx, or the 2xx body failed to deserialize into the expected
type. status, headers, and body are always populated so callers can
inspect what the server actually sent without having to hack the generated
client. typed is Some(_) when the raw body was successfully parsed into a
per-operation error type; parse_error records why parsing failed when not.
Formatting the error limits only the displayed body preview; the public
fields retain the complete response and parsing details.
Fields§
§status: u16§headers: HeaderMap§body: String§typed: Option<E>§parse_error: Option<String>Implementations§
Source§impl<E> ApiError<E>
impl<E> ApiError<E>
pub fn is_client_error(&self) -> bool
pub fn is_server_error(&self) -> bool
Sourcepub fn problem_details(&self) -> Option<ProblemDetails>
pub fn problem_details(&self) -> Option<ProblemDetails>
Decode the generated RFC 9457 validation-problem profile without disturbing a documented typed error.
Only the application/problem+json media type is accepted. Arbitrary
JSON error bodies are deliberately not reclassified as Problem Details.
Trait Implementations§
Source§impl<E: Debug> Error for ApiError<E>
impl<E: Debug> Error for ApiError<E>
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()
Auto Trait Implementations§
impl<E> Freeze for ApiError<E>where
E: Freeze,
impl<E> RefUnwindSafe for ApiError<E>where
E: RefUnwindSafe,
impl<E> Send for ApiError<E>where
E: Send,
impl<E> Sync for ApiError<E>where
E: Sync,
impl<E> Unpin for ApiError<E>where
E: Unpin,
impl<E> UnsafeUnpin for ApiError<E>where
E: UnsafeUnpin,
impl<E> UnwindSafe for ApiError<E>where
E: UnwindSafe,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.