use std::convert::Infallible; use hyper::service::{make_service_fn, service_fn}; use hyper::{Body, Request, Response, Server}; itconfig::config! { hyper { static HOST < ( ADDR => "127.0.0.1", ":", PORT => 8000, ), } } async fn hello(_: Request) -> Result, Infallible> { Ok(Response::new(Body::from("Hello World!"))) } #[tokio::main] pub async fn main() -> Result<(), Box> { config::init(); pretty_env_logger::init(); // For every connection, we must make a `Service` to handle all // incoming HTTP requests on said connection. let make_svc = make_service_fn(|_conn| { // This is the `Service` that will handle the connection. // `service_fn` is a helper to convert a function that // returns a Response into a `Service`. async { Ok::<_, Infallible>(service_fn(hello)) } }); let addr = config::hyper::HOST().parse()?; let server = Server::bind(&addr).serve(make_svc); println!("Listening on http://{}", addr); server.await?; Ok(()) }