Attribute Macro rocket_codegen::catch
source · #[catch]
Expand description
Attribute to generate a Catcher
and associated metadata.
This attribute can only be applied to free functions:
use rocket::Request;
use rocket::http::Status;
#[catch(404)]
fn not_found(req: &Request) -> String {
format!("Sorry, {} does not exist.", req.uri())
}
#[catch(default)]
fn default(status: Status, req: &Request) -> String {
format!("{} ({})", status, req.uri())
}
Grammar
The grammar for the #[catch]
attributes is defined as:
catch := STATUS | 'default'
STATUS := valid HTTP status code (integer in [200, 599])
Typing Requirements
The decorated function may take zero, one, or two arguments. It’s type
signature must be one of the following, where R:
Responder
:
Semantics
The attribute generates two items:
-
An error
Handler
.The generated handler calls the decorated function, passing in the
Status
and&Request
values if requested. The returned value is used to generate aResponse
via the type’sResponder
implementation. -
A static structure used by
catchers!
to generate aCatcher
.The static structure (and resulting
Catcher
) is populated with the name (the function’s name) and status code from the route attribute orNone
ifdefault
. The handler is set to the generated handler.