Skip to main content

Module effects

Module effects 

Source
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§

EffectfulLayeredServer
An effectful server with Tower middleware layers applied.
EffectfulServer
A server builder that tracks which middleware effects have been provided.