pub fn service_fn<T>(f: T) -> ServiceFn<T>
Expand description

Returns a new ServiceFn with the given closure.

This lets you build a Service from an async function that returns a Result.

§Example

use tower::{service_fn, Service, ServiceExt, BoxError};

async fn handle(request: Request) -> Result<Response, BoxError> {
    let response = Response::new("Hello, World!");
    Ok(response)
}

let mut service = service_fn(handle);

let response = service
    .ready()
    .await?
    .call(Request::new())
    .await?;

assert_eq!("Hello, World!", response.into_body());