#[launch]
Expand description
Generates a main
function that launches a returned Rocket<Build>
.
When applied to a function that returns a Rocket<Build>
instance,
#[launch]
automatically initializes an async
runtime and
launches the function’s returned instance:
use rocket::{Rocket, Build};
#[launch]
fn rocket() -> Rocket<Build> {
rocket::build()
}
This generates code equivalent to the following:
#[rocket::main]
async fn main() {
// Recall that an uninspected `Error` will cause a pretty-printed panic,
// so rest assured errors do not go undetected when using `#[launch]`.
let _ = rocket().launch().await;
}
To avoid needing to import any items in the common case, the launch
attribute will infer a return type written as _
as Rocket<Build>
:
#[launch]
fn rocket() -> _ {
rocket::build()
}
The attributed function may be async
:
#[launch]
async fn rocket() -> _ {
some_async_work().await;
rocket::build()
}