#client-server #request-response #service-request #async-trait #tower #traits #foundation

tower-async-service

Trait representing an asynchronous, request / response based, client or server. An "Async Trait" fork from the original Tower Library

3 unstable releases

0.2.0 Nov 20, 2023
0.1.1 Jul 18, 2023
0.1.0 Jul 17, 2023

#8 in #service-request


Used in 5 crates

MIT license

13KB

Tower Async Service

The foundational Service trait that Tower Async is based on.

Crates.io Documentation MIT licensed Build Status

Fork

Tower Async Service is a fork of https://github.com/tower-rs/tower and makes use of async traits to simplify things and make it more easier to integrate async functions into middleware.

This fork is made entirely with the needs of the author in mind, and thus might not yet contain all features you might need.

Come join us at discord on the #tower-async public channel at Discord or tag @glendc at Tokio's Tower discord instead.

Where suitable we'll keep in sync (manually) with Tower and if the opportunity arises we'll contribute back "upstream" as well. Given however how big the diversange we aren't sure how likely that is.

Overview

The Service trait provides the foundation upon which [Tower] is built. It is a simple, but powerful trait. At its heart, Service is just an asynchronous function of request to response.

async fn(Request) -> Result<Response, Error>

Implementations of Service take a request, the type of which varies per protocol, and returns a future representing the eventual completion or failure of the response.

Services are used to represent both clients and servers. An instance of Service is used through a client; a server implements Service.

By using standardizing the interface, middleware can be created. Middleware implement Service by passing the request to another Service. The middleware may take actions such as modify the request.

License

This project is licensed under the MIT license.

Big thanks and credits go towards the original Tower authors which licensed their code under the same License type.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Tower Async by you, shall be licensed as MIT, without any additional terms or conditions.

No runtime deps