0bdb6b7bc7
Launch fairings are now fallible and take the place of attach fairings, but they are only run, as the name implies, at launch time. This is is a fundamental shift from eager execution of set-up routines, including the now defunct attach fairings, to lazy execution, precipitated by the transition to `async`. The previous functionality, while simple, caused grave issues: 1. A instance of 'Rocket' with async attach fairings requires an async runtime to be constructed. 2. The instance is accessible in non-async contexts. 3. The async attach fairings have no runtime in which to be run. Here's an example: ```rust let rocket = rocket::ignite() .attach(AttachFairing::from(|rocket| async { Ok(rocket.manage(load_from_network::<T>().await)) })); let state = rocket.state::<T>(); ``` This had no real meaning previously yet was accepted by running the attach fairing future in an isolated runtime. In isolation, this causes no issue, but when attach fairing futures share reactor state with other futures in Rocket, panics ensue. The new Rocket application lifecycle is this: * Build - A Rocket instance is constructed. No fairings are run. * Ignition - All launch fairings are run. * Liftoff - If all launch fairings succeeded, the server is started. New 'liftoff' fairings are run in this third phase. |
||
---|---|---|
.. | ||
guide | ||
news | ||
tests | ||
LICENSE | ||
README.md | ||
index.toml | ||
overview.toml |
README.md
Rocket Website Source
This directory contains the source files for the content on Rocket's website.
Contents
This directory contains the following:
index.toml
- Source data for the index.overview.toml
- Source data for the overview page (overview/
).news/index.toml
- Source data for the news page (news/
).news/*.md
- News articles linked to fromnews/index.toml
.guide/*.md
- Guide pages linked to fromguide.md
.
Guide Links
Cross-linking guide pages is accomplished via relative links. Outside of the
index, this is: ../{page}#anchor
. For instance, to link to the Quickstart >
Running Examples page, use ../quickstart#running-examples
.
Aliases
Aliases are shorthand URLs that start with @
(e.g, @api
). They are used
throughout the guide to simplify versioning URLs to Rocket's source code and the
Rocket API. They are replaced at build time with a URL prefix. At present, the
following aliases are available, where ${version}
is Rocket's version string
at the time of compilation:
@example
: https://github.com/SergioBenitez/Rocket/tree/${version}/examples@github
: https://github.com/SergioBenitez/Rocket/tree/${version}@api
: https://api.rocket.rs/${version}
For example, to link to Rocket::launch()
, you might write:
Launch an instance of your application using the [`launch()`] method.
[`launch()`]: @api/rocket/struct.Rocket.html#method.launch
License
The Rocket website source is licensed under the GNU General Public License v3.0.