Module hyper::service [] [src]

Services and NewServices

  • A Service is a trait representing an asynchronous function of a request to a response. It's similar to async fn(Request) -> Result<Response, Error>.
  • A NewService is a trait creating specific instances of a Service.

These types are conceptually similar to those in tower, while being specific to hyper.


In hyper, especially in the server setting, a Service is usually bound to a single connection. It defines how to respond to all requests that connection will receive.

While it's possible to implement Service for a type manually, the helpers service_fn and service_fn_ok should be sufficient for most cases.


Since a Service is bound to a single connection, a Server needs a way to make them as it accepts connections. This is what a NewService does.

Resources that need to be shared by all Services can be put into a NewService, and then passed to individual Services when new_service is called.



An asynchronous constructor of Services.


An asynchronous function from Request to Response.



Create a Service from a function.


Create a Service from a function that never errors.