pub trait Handler{
type Future: Future<Output = ServerResult<Response<Self::ResponseBody>>> + Send + 'static;
type ResponseBody: BodyTrait<Data = Bytes, Error = Self::ResponseBodyError> + Send + Sync + 'static;
type ResponseBodyError: Error + Send + Sync + 'static;
// Required method
fn handle(&self, _request: Request<Body>) -> Self::Future;
// Provided method
fn wrap(self) -> HandlerWrapper<Self>
where Self: Sized { ... }
}