Skip to main content

DeserializeError

Enum DeserializeError 

Source
#[non_exhaustive]
pub enum DeserializeError { Serde(SerdeError), InitialRequestFrame(String), BodyCollection(RequestBodyCollectionError<Error>), ConstraintViolation(Box<dyn HttpModeledError>), UnsupportedMediaType(Box<MissingContentTypeReason>), NotAcceptable, InternalFailure(Error), }
Expand description

Why a request failed without reaching its operation handler.

This is the one protocol-independent failure enum on the schema path: every way a request can fail before its handler runs lands here — almost always a failure to become the operation input, plus the missing-handler InternalFailure — and each protocol turns the whole enum into its wire response through ServerProtocol::serialize_rejection.

Variants preserve the failure category even when their rejection responses are identical. The Content-Type and Accept failures are not folded into Serde: protocols answer them differently (restJson1 keeps 415 and 406 distinct from the 400 that Serde produces), and the renderer matches on the variant to pick the response. They also originate in different layers: [SerdeError] belongs to the codec in aws-smithy-schema and describes failures reading the payload and bindings into the input shape, while the Content-Type and Accept checks run in the HTTP protocol layer before the codec — the codec never sees headers, and the transport-agnostic schema crate carries no HTTP semantics.

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

Serde(SerdeError)

The request could not be read as the input shape: a malformed document, a type mismatch, an unparseable header, label or query value, or a request that could not be converted into its canonical form.

§

InitialRequestFrame(String)

Reading an RPC initial-request event frame failed. Preserve the generated serde raw validation rejection rather than treating a frame failure as a codec error.

§

BodyCollection(RequestBodyCollectionError<Error>)

Reading the request body failed, exceeded its size limit, or timed out. Preserves the typed failure while rendering the protocol’s ordinary deserialization rejection.

§

ConstraintViolation(Box<dyn HttpModeledError>)

The request was well-formed but violates a modeled constraint.

§

UnsupportedMediaType(Box<MissingContentTypeReason>)

The request’s Content-Type header does not match what the operation expects.

Raised by the protocol layer’s header check, never by the codec; carries the expected and found mime types the 415 response is built from.

§

NotAcceptable

The request’s Accept header cannot accept the operation’s response content type.

Raised by the protocol layer’s header check, never by the codec.

§

InternalFailure(Error)

The service cannot run the selected operation.

Raised by the missing-handler fallback when a service built with build_unchecked receives a request for an operation without a registered handler, never by request parsing. Renders as the protocol’s 500 internal-failure response; the carried error is logged, not written to the wire.

Trait Implementations§

Source§

impl Debug for DeserializeError

Source§

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

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

impl Display for DeserializeError

Source§

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

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

impl Error for DeserializeError

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<RequestBodyCollectionError<Error>> for DeserializeError

Source§

fn from(err: RequestBodyCollectionError<Error>) -> Self

Converts to this type from the input type.
Source§

impl From<SerdeError> for DeserializeError

Source§

fn from(err: SerdeError) -> 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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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
§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
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 = 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.
§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

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

§

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

§

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