use std::net::TcpListener; use sqlx::postgres::PgPoolOptions; use zero2prod::configuration::get_configuration; use zero2prod::startup::run; use zero2prod::telemetry::{get_subscriber, init_subscriber}; #[tokio::main] async fn main() -> std::io::Result<()> { let subscriber = get_subscriber("zero2prod".into(), "info".into(), std::io::stdout); init_subscriber(subscriber); let config = get_configuration().expect("Failed to read configuration"); println!("Application configuration: {}", config.application.port); let connection_pool = PgPoolOptions::new().acquire_timeout(std::time::Duration::from_secs(2)) .max_connections(10).connect_lazy_with(config.database.with_db()); let address = format!("{}:{}", config.application.host, config.application.port); let listener = TcpListener::bind(address).expect("Failed to bind random port"); run(listener, connection_pool)?.await }