@@ -8,6 +8,7 @@ use kv_log_macro::{info, trace};
8
8
use crate :: cookies;
9
9
use crate :: listener:: { Listener , ToListener } ;
10
10
use crate :: middleware:: { Middleware , Next } ;
11
+ use crate :: route:: MatchedRoute ;
11
12
use crate :: router:: { Router , Selection } ;
12
13
use crate :: { Endpoint , Request , Route } ;
13
14
@@ -287,9 +288,17 @@ where
287
288
} = self . clone ( ) ;
288
289
289
290
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) ;
291
296
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
+ }
293
302
294
303
let next = Next {
295
304
endpoint,
@@ -349,9 +358,17 @@ impl<State: Clone + Sync + Send + 'static, InnerState: Clone + Sync + Send + 'st
349
358
let middleware = self . middleware . clone ( ) ;
350
359
let state = self . state . clone ( ) ;
351
360
352
- let Selection { endpoint, params } = router. route ( & path, method) ;
361
+ let Selection {
362
+ endpoint,
363
+ params,
364
+ matched_route,
365
+ } = router. route ( & path, method) ;
353
366
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
+ }
355
372
356
373
let next = Next {
357
374
endpoint,
0 commit comments