pub trait Middleware: Send + Sync {
// Required method
fn handle<'t, 'n, 'a>(
&'t self,
req: Request,
next: &'n dyn Handler,
) -> BoxFuture<'a, Result<Response>>
where Self: 'a,
't: 'a,
'n: 'a;
// Provided method
fn boxed(self) -> Box<dyn Middleware>
where Self: Sized + 'static { ... }
}