use axum::{routing::get, Router};
use futures_util::future::try_join_all;
use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
#[tokio::main]
async fn main() {
let servers = vec![
SocketAddr::new(Ipv4Addr::LOCALHOST.into(), 3000),
SocketAddr::new(Ipv6Addr::LOCALHOST.into(), 3000),
]
.into_iter()
.map(|addr| tokio::spawn(start_server(addr)));
try_join_all(servers).await.unwrap();
}
async fn start_server(addr: SocketAddr) {
let app = Router::new().route("/", get(|| async { "Hello, world!" }));
axum_server::bind(addr)
.serve(app.into_make_service())
.await
.unwrap();
}