#![deny(warnings)] use warp::Filter; fn hello_wrapper( filter: F, ) -> impl Filter + Clone + Send + Sync + 'static where F: Filter + Clone + Send + Sync + 'static, F::Extract: warp::Reply, { warp::any() .map(|| { println!("before filter"); }) .untuple_one() .and(filter) .map(|_arg| "wrapped hello world") } #[tokio::main] async fn main() { // Match any request and return hello world! let routes = warp::any() .map(|| "hello world") .boxed() .recover(|_err| async { Ok("recovered") }) // wrap the filter with hello_wrapper .with(warp::wrap_fn(hello_wrapper)); warp::serve(routes).run(([127, 0, 0, 1], 3030)).await; }