Expand description
Server-side middleware effects tracking.
EffectfulServer wraps a Server and tracks which middleware effects
have been provided via .provide::<E>(). The .serve() method only
compiles when all effects declared in the API type (via
Requires<E, _>) have been discharged.
§Example
ⓘ
use typeway_core::effects::*;
type API = (
Requires<AuthRequired, GetEndpoint<UserPath, User>>,
Requires<CorsRequired, GetEndpoint<PublicPath, Data>>,
GetEndpoint<HealthPath, String>,
);
EffectfulServer::<API>::new(handlers)
.provide::<AuthRequired>()
.layer(auth_layer)
.provide::<CorsRequired>()
.layer(CorsLayer::permissive())
.serve(addr) // only compiles because both effects are provided
.await;Structs§
- Effectful
Layered Server - An effectful server with Tower middleware layers applied.
- Effectful
Server - A server builder that tracks which middleware effects have been provided.