Attribute Macro rocket_codegen::catch [−][src]
#[catch]
Expand description
Attribute to generate a Catcher
and associated metadata.
This attribute can only be applied to free functions:
use rocket::Request;
#[catch(404)]
fn not_found(req: &Request) -> String {
format!("Sorry, {} does not exist.", req.uri())
}
Grammar
The grammar for the #[catch]
attributes is defined as:
catch := STATUS
STATUS := valid HTTP status code (integer in [200, 599])
Typing Requirements
The decorated function must take exactly zero or one argument. If the
decorated function takes an argument, the argument’s type must be
&Request
.
The return type of the decorated function must implement the Responder
trait.
Semantics
The attribute generates two items:
-
An
ErrorHandler
.The generated handler calls the decorated function, passing in the
&Request
value 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. The handler is set to the generated handler.