use std::{convert::Infallible, net::SocketAddr}; use hyper::{Body, Request, Response, Server}; use hyper::service::{make_service_fn, service_fn}; use hyper::header::{CONTENT_TYPE, CONTENT_LENGTH, SERVER}; const RESP: &str = "Welcome!"; async fn handle(_: Request) -> Result, Infallible> { let mut resp = Response::new(RESP.into()); resp .headers_mut() .insert(SERVER, "rusthttp".parse().unwrap()); resp .headers_mut() .insert(CONTENT_TYPE, "application/json".parse().unwrap()); resp .headers_mut() .insert(CONTENT_LENGTH, RESP.len().to_string().parse().unwrap()); Ok(resp) } #[tokio::main] async fn main() { let addr = SocketAddr::from(([127, 0, 0, 1], 8080)); let make_svc = make_service_fn(|_conn| async { Ok::<_, Infallible>(service_fn(handle)) }); let server = Server::bind(&addr) .serve(make_svc); if let Err(e) = server.await { eprintln!("server error: {}", e); } }