use std::sync::Arc; use game_service::{GameConfig, GameService}; use service_rpc::serve; use tokio::net::TcpListener; #[tokio::main] async fn main() -> Result<(), Box> { tracing_subscriber::fmt() .with_env_filter( tracing_subscriber::EnvFilter::try_from_default_env() .unwrap_or_else(|_| tracing_subscriber::EnvFilter::new("info")), ) .init(); let config = GameConfig::from_env(); let listener = TcpListener::bind(&config.listen).await?; tracing::info!(listen = %config.listen, "game service listening"); let service = GameService::bootstrap(config).await?; serve(listener, Arc::clone(&service)).await?; Ok(()) }