@@ -8,6 +8,7 @@ use kv_log_macro::{info, trace};
88use crate :: cookies;
99use crate :: listener:: { Listener , ToListener } ;
1010use crate :: middleware:: { Middleware , Next } ;
11+ use crate :: route:: MatchedRoute ;
1112use crate :: router:: { Router , Selection } ;
1213use crate :: { Endpoint , Request , Route } ;
1314
@@ -287,9 +288,17 @@ where
287288 } = self . clone ( ) ;
288289
289290 let method = req. method ( ) . to_owned ( ) ;
290- let Selection { endpoint, params } = router. route ( req. url ( ) . path ( ) , method) ;
291+ let Selection {
292+ endpoint,
293+ params,
294+ matched_route,
295+ } = router. route ( req. url ( ) . path ( ) , method) ;
291296 let route_params = vec ! [ params] ;
292- let req = Request :: new ( state, req, route_params) ;
297+ let mut req = Request :: new ( state, req, route_params) ;
298+
299+ if let Some ( route) = matched_route {
300+ req. set_ext ( MatchedRoute ( route) ) ;
301+ }
293302
294303 let next = Next {
295304 endpoint,
@@ -349,9 +358,17 @@ impl<State: Clone + Sync + Send + 'static, InnerState: Clone + Sync + Send + 'st
349358 let middleware = self . middleware . clone ( ) ;
350359 let state = self . state . clone ( ) ;
351360
352- let Selection { endpoint, params } = router. route ( & path, method) ;
361+ let Selection {
362+ endpoint,
363+ params,
364+ matched_route,
365+ } = router. route ( & path, method) ;
353366 route_params. push ( params) ;
354- let req = Request :: new ( state, req, route_params) ;
367+ let mut req = Request :: new ( state, req, route_params) ;
368+
369+ if let Some ( route) = matched_route {
370+ req. set_ext ( MatchedRoute ( route) ) ;
371+ }
355372
356373 let next = Next {
357374 endpoint,
0 commit comments