use tokio::net::TcpListener; use tracing::level_filters::LevelFilter; use tracing_subscriber::{layer::SubscriberExt, registry, util::SubscriberInitExt, EnvFilter}; use unnamed_server::state::AppState; use crate::config::Config; mod config; #[tokio::main] async fn main() -> Result<(), main_error::MainError> { registry() .with( EnvFilter::builder() .with_default_directive(LevelFilter::INFO.into()) .from_env_lossy(), ) .with(tracing_subscriber::fmt::layer()) .init(); let config = Config::builder().file()?.env().build()?; let listener = TcpListener::bind(config.listen_addr).await?; let state = AppState::new(config.database_url).await?; let router = unnamed_server::router().with_state(state); tracing::info!("Listening on http://{}", listener.local_addr()?); axum::serve(listener, router).await.map_err(From::from) }