The foundational Service
trait that Tower Async is based on.
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.
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.
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.
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.