#[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
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
impl Debug for DeserializeError
Source§impl Display for DeserializeError
impl Display for DeserializeError
Source§impl Error for DeserializeError
impl Error for DeserializeError
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()
Source§impl From<RequestBodyCollectionError<Error>> for DeserializeError
impl From<RequestBodyCollectionError<Error>> for DeserializeError
Source§fn from(err: RequestBodyCollectionError<Error>) -> Self
fn from(err: RequestBodyCollectionError<Error>) -> Self
Auto Trait Implementations§
impl Freeze for DeserializeError
impl !RefUnwindSafe for DeserializeError
impl Send for DeserializeError
impl Sync for DeserializeError
impl Unpin for DeserializeError
impl UnsafeUnpin for DeserializeError
impl !UnwindSafe for DeserializeError
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<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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