#![forbid(unsafe_code)]
extern crate alloc;
pub mod cache;
pub mod cli;
pub mod error;
pub mod format;
pub mod handlers;
pub mod metrics;
pub mod mime_parser;
pub mod router;
pub mod server;
pub mod telemetry;
pub mod tracing_init;
pub use cli::Args;
pub use server::{serve, ServerError};
#[must_use]
#[inline]
pub fn init_telemetry() -> telemetry::TelemetryGuard {
telemetry::init()
}
#[inline]
pub fn init_tracing() {
drop(tracing_init::try_init());
}
#[inline]
pub fn run_server(args: cli::Args) -> Result<(), ServerError> {
let config = args.into_config();
let runtime = tokio::runtime::Builder::new_multi_thread()
.enable_all()
.build()
.map_err(ServerError::RuntimeBuild)?;
runtime.block_on(async {
init_tracing();
serve(config).await
})
}