#[non_exhaustive]pub enum Error {
NotFound,
MethodNotAllowed,
BadRequest(String),
Unauthorized,
Forbidden,
PayloadTooLarge,
TooManyRequests,
Internal(String),
}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.
NotFound
MethodNotAllowed
BadRequest(String)
Forbidden
PayloadTooLarge
413 Payload Too Large. Produced by the form parser when an
incoming body exceeds the configured limit; the ceiling is a
DoS defence, not a business rule.
TooManyRequests
429 Too Many Requests. Used by the login rate limiter when a
caller has tripped the failure threshold.
Internal(String)
Implementations§
Source§impl Error
impl Error
Sourcepub fn status(&self) -> u16
pub fn status(&self) -> u16
HTTP status code associated with this variant.
Examples found in repository?
examples/homepage.rs (line 33)
24async fn logger(req: Request, next: Next) -> Result<Response, Error> {
25 let method = req.method().clone();
26 let path = req.uri().path().to_owned();
27 let id = req.ctx().get::<RequestId>().map(|r| r.0);
28 let user = rustio_core::auth::identity(req.ctx()).map(|i| i.email.clone());
29 let started = Instant::now();
30 let result = next.run(req).await;
31 let status = match &result {
32 Ok(resp) => resp.status().as_u16(),
33 Err(err) => err.status(),
34 };
35 let id_display = id.map(|i| format!("req-{i}")).unwrap_or_else(|| "-".into());
36 let user_display = user.unwrap_or_else(|| "-".into());
37 eprintln!(
38 "[{:>3}] {:>4} {} id={} user={} ({:?})",
39 status,
40 method,
41 path,
42 id_display,
43 user_display,
44 started.elapsed()
45 );
46 result
47}Sourcepub fn message(&self) -> &str
pub fn message(&self) -> &str
Human-readable message carried by the variant.
For Internal, this returns the full underlying detail. That detail
is safe for logs but is not sent to HTTP clients — see
Error::into_response.
Sourcepub fn into_response(self) -> Response
pub fn into_response(self) -> Response
Convert this error into an HTTP response.
The body exposed to clients is sanitized for Internal — it always
reads "Internal Server Error", never the original detail.
Trait Implementations§
Source§impl Error for Error
impl Error for Error
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
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
fn description(&self) -> &str
👎Deprecated since 1.42.0:
use the Display impl or to_string()
Source§impl From<SchemaError> for Error
impl From<SchemaError> for Error
Source§fn from(e: SchemaError) -> Self
fn from(e: SchemaError) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl Freeze for Error
impl RefUnwindSafe for Error
impl Send for Error
impl Sync for Error
impl Unpin for Error
impl UnsafeUnpin for Error
impl UnwindSafe for Error
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
Mutably borrows from an owned value. Read more
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> 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>
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 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>
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