This way we can build Rockets from outside the crate and run benchmarks, for example. * Add top-level `setup()` function to create a Rocket and set up the maps refresher task * Change the type of `maps::run` since `!` is still an unstable type * Fix HTTP code blocks in `README.md` so they don't appear as doctests to rustdoc
35 lines
782 B
Rust
35 lines
782 B
Rust
#![doc = include_str!("../README.md")]
|
|
#![warn(
|
|
clippy::all,
|
|
missing_debug_implementations,
|
|
rust_2018_idioms,
|
|
rustdoc::broken_intra_doc_links
|
|
)]
|
|
#![deny(missing_docs)]
|
|
|
|
use color_eyre::Result;
|
|
use rocket::tokio::{self, select};
|
|
|
|
/// Starts the main maps refresh task and sets up and launches Rocket.
|
|
#[rocket::main]
|
|
async fn main() -> Result<()> {
|
|
color_eyre::install()?;
|
|
|
|
let (rocket, maps_refresher) = sinoptik::setup();
|
|
let rocket = rocket.ignite().await?;
|
|
let shutdown = rocket.shutdown();
|
|
let maps_refresher = tokio::spawn(maps_refresher);
|
|
|
|
select! {
|
|
result = rocket.launch() => {
|
|
result?
|
|
}
|
|
result = maps_refresher => {
|
|
shutdown.notify();
|
|
result?
|
|
}
|
|
}
|
|
|
|
Ok(())
|
|
}
|