1
0
Fork 0
firefox/third_party/rust/warp/examples/wrapping.rs
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

31 lines
824 B
Rust

#![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;
}