randomusert_lib/randomusert_lib/
server.rs

1
2
3
4pub mod server {
5        use hyper::service::make_service_fn;
6        use hyper::service::service_fn;
7        use hyper::Request;
8        use hyper::Body;
9        use hyper::Server;
10        use hyper::Response;
11        use std::net::SocketAddr;
12        /// Starts an HTTP server on the specified address.
13        pub async fn start_server(addr: SocketAddr, handler: fn(Request<Body>) -> Response<Body>) -> Result<(), hyper::Error> {
14        // Create a service function
15            let make_svc = make_service_fn(move |_| {
16            let handler = handler.clone();
17            async move {
18                Ok::<_, hyper::Error>(service_fn(move |req: Request<Body>| {
19                    let response = handler(req);
20                    async { Ok::<_, hyper::Error>(response) }
21                }))
22            }
23            
24    });
25    let server = Server::bind(&addr).serve(make_svc);
26            println!("Server running on http://{}", addr);
27        
28            server.await
29        }
30}