#![deny(warnings)] use std::convert::Infallible; use std::net::SocketAddr; use hyper::server::conn::Http; use hyper::service::service_fn; use hyper::{Body, Request, Response}; use tokio::net::TcpListener; async fn hello(_: Request) -> Result, Infallible> { Ok(Response::new(Body::from("Hello World!"))) } #[tokio::main] pub async fn main() -> Result<(), Box> { pretty_env_logger::init(); let addr: SocketAddr = ([127, 0, 0, 1], 3000).into(); let listener = TcpListener::bind(addr).await?; println!("Listening on http://{}", addr); loop { let (stream, _) = listener.accept().await?; tokio::task::spawn(async move { if let Err(err) = Http::new() .serve_connection(stream, service_fn(hello)) .await { println!("Error serving connection: {:?}", err); } }); } }