Trait Handler

Source
pub trait Handler:
    Send
    + Sync
    + 'static {
    // Required method
    fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
        &'life0 self,
        req: &'life1 mut Request,
        depot: &'life2 mut Depot,
        res: &'life3 mut Response,
        ctrl: &'life4 mut FlowCtrl,
    ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             'life3: 'async_trait,
             'life4: 'async_trait,
             Self: 'async_trait;

    // Provided methods
    fn arc(self) -> ArcHandler
       where Self: Sized { ... }
    fn hooped<H>(self) -> HoopedHandler
       where H: Handler,
             Self: Sized { ... }
    fn hoop<H>(self, hoop: H) -> HoopedHandler
       where H: Handler,
             Self: Sized { ... }
    fn hoop_when<H, F>(self, hoop: H, filter: F) -> HoopedHandler
       where Self: Sized,
             H: Handler,
             F: Fn(&Request, &Depot) -> bool + Send + Sync + 'static { ... }
}
Expand description

Handler is used for handle Request.

View module level documentation for more details.

Required Methods§

Source

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, depot: &'life2 mut Depot, res: &'life3 mut Response, ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, Self: 'async_trait,

Handle http request.

Provided Methods§

Source

fn arc(self) -> ArcHandler
where Self: Sized,

Wrap to ArcHandler.

Source

fn hooped<H>(self) -> HoopedHandler
where H: Handler, Self: Sized,

Wrap to HoopedHandler.

Source

fn hoop<H>(self, hoop: H) -> HoopedHandler
where H: Handler, Self: Sized,

Hoop this handler with middleware.

Source

fn hoop_when<H, F>(self, hoop: H, filter: F) -> HoopedHandler
where Self: Sized, H: Handler, F: Fn(&Request, &Depot) -> bool + Send + Sync + 'static,

Hoop this handler with middleware.

This middleware is only effective when the filter returns true..

Implementations on Foreign Types§

Source§

impl Handler for ETag

Source§

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, depot: &'life2 mut Depot, res: &'life3 mut Response, ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, ETag: 'async_trait,

Source§

impl Handler for Modified

Source§

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, depot: &'life2 mut Depot, res: &'life3 mut Response, ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, Modified: 'async_trait,

Source§

impl Handler for CatchPanic

Source§

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, depot: &'life2 mut Depot, res: &'life3 mut Response, ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, CatchPanic: 'async_trait,

Source§

impl Handler for MaxConcurrency

Source§

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, depot: &'life2 mut Depot, res: &'life3 mut Response, ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, MaxConcurrency: 'async_trait,

Source§

impl Handler for ForceHttps

Source§

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, depot: &'life2 mut Depot, res: &'life3 mut Response, ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, ForceHttps: 'async_trait,

Source§

impl Handler for RequestId

Source§

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, depot: &'life2 mut Depot, _res: &'life3 mut Response, _ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, RequestId: 'async_trait,

Source§

impl Handler for MaxSize

Source§

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, depot: &'life2 mut Depot, res: &'life3 mut Response, ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, MaxSize: 'async_trait,

Source§

impl Handler for Timeout

Source§

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, depot: &'life2 mut Depot, res: &'life3 mut Response, ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, Timeout: 'async_trait,

Source§

impl<A> Handler for (A,)
where A: Handler,

Source§

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, depot: &'life2 mut Depot, res: &'life3 mut Response, ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, (A,): 'async_trait,

Source§

impl<A, B> Handler for (A, B)
where A: Handler, B: Handler,

Source§

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, depot: &'life2 mut Depot, res: &'life3 mut Response, ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, (A, B): 'async_trait,

Source§

impl<A, B, C> Handler for (A, B, C)
where A: Handler, B: Handler, C: Handler,

Source§

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, depot: &'life2 mut Depot, res: &'life3 mut Response, ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, (A, B, C): 'async_trait,

Source§

impl<A, B, C, D> Handler for (A, B, C, D)
where A: Handler, B: Handler, C: Handler, D: Handler,

Source§

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, depot: &'life2 mut Depot, res: &'life3 mut Response, ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, (A, B, C, D): 'async_trait,

Source§

impl<A, B, C, D, E> Handler for (A, B, C, D, E)
where A: Handler, B: Handler, C: Handler, D: Handler, E: Handler,

Source§

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, depot: &'life2 mut Depot, res: &'life3 mut Response, ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, (A, B, C, D, E): 'async_trait,

Source§

impl<A, B, C, D, E, F> Handler for (A, B, C, D, E, F)
where A: Handler, B: Handler, C: Handler, D: Handler, E: Handler, F: Handler,

Source§

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, depot: &'life2 mut Depot, res: &'life3 mut Response, ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, (A, B, C, D, E, F): 'async_trait,

Source§

impl<A, B, C, D, E, F, G> Handler for (A, B, C, D, E, F, G)
where A: Handler, B: Handler, C: Handler, D: Handler, E: Handler, F: Handler, G: Handler,

Source§

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, depot: &'life2 mut Depot, res: &'life3 mut Response, ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, (A, B, C, D, E, F, G): 'async_trait,

Source§

impl<A, B, C, D, E, F, G, H> Handler for (A, B, C, D, E, F, G, H)
where A: Handler, B: Handler, C: Handler, D: Handler, E: Handler, F: Handler, G: Handler, H: Handler,

Source§

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, depot: &'life2 mut Depot, res: &'life3 mut Response, ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, (A, B, C, D, E, F, G, H): 'async_trait,

Source§

impl<Svc, QB, SB, E> Handler for TowerLayerHandler<Svc, QB>
where QB: TryFrom<ReqBody> + Body + Send + Sync + 'static, <QB as TryFrom<ReqBody>>::Error: Error + Send + Sync + 'static, SB: Body + Send + Sync + 'static, <SB as Body>::Data: Into<Bytes> + Send + Debug + 'static, <SB as Body>::Error: Error + Send + Sync + 'static, E: Error + Send + Sync + 'static, Svc: Service<Request<QB>, Response = Response<SB>> + Send + 'static, <Svc as Service<Request<QB>>>::Future: Future<Output = Result<Response<SB>, E>> + Send + 'static, <Svc as Service<Request<QB>>>::Error: Error + Send + Sync,

Source§

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, depot: &'life2 mut Depot, res: &'life3 mut Response, ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, TowerLayerHandler<Svc, QB>: 'async_trait,

Source§

impl<Svc, QB, SB, E, Fut> Handler for TowerServiceHandler<Svc, QB>
where QB: TryFrom<ReqBody> + Body + Send + Sync + 'static, <QB as TryFrom<ReqBody>>::Error: Error + Send + Sync + 'static, SB: Body + Send + Sync + 'static, <SB as Body>::Data: Into<Bytes> + Send + Debug + 'static, <SB as Body>::Error: Error + Send + Sync + 'static, E: Error + Send + Sync + 'static, Svc: Service<Request<QB>, Response = Response<SB>, Future = Fut> + Send + Sync + Clone + 'static, <Svc as Service<Request<QB>>>::Error: Error + Send + Sync + 'static, Fut: Future<Output = Result<Response<SB>, E>> + Send + 'static,

Source§

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, _depot: &'life2 mut Depot, res: &'life3 mut Response, _ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, TowerServiceHandler<Svc, QB>: 'async_trait,

Source§

impl<V> Handler for BasicAuth<V>
where V: BasicAuthValidator + 'static,

Source§

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, depot: &'life2 mut Depot, res: &'life3 mut Response, ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, BasicAuth<V>: 'async_trait,

Implementors§