blob: bfc84f980fb6a864c7c930361c6d7eb193c12ceb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#![deny(warnings)]
use warp::Filter;
fn hello_wrapper<F, T>(
filter: F,
) -> impl Filter<Extract = (&'static str,)> + Clone + Send + Sync + 'static
where
F: Filter<Extract = (T,), Error = std::convert::Infallible> + 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;
}
|