@@ -195,7 +195,9 @@ impl<T> Router<T> {
195
195
let param_names = metadata. param_names . clone ( ) ;
196
196
197
197
for ( i, capture) in nfa_match. captures . iter ( ) . enumerate ( ) {
198
- map. insert ( param_names[ i] . to_string ( ) , capture. to_string ( ) ) ;
198
+ if !param_names[ i] . is_empty ( ) {
199
+ map. insert ( param_names[ i] . to_string ( ) , capture. to_string ( ) ) ;
200
+ }
199
201
}
200
202
201
203
let handler = self . handlers . get ( & nfa_match. state ) . unwrap ( ) ;
@@ -345,6 +347,21 @@ fn star() {
345
347
assert_eq ! ( m. params, params( "foo" , "bar/foo" ) ) ;
346
348
}
347
349
350
+ #[ test]
351
+ fn unnamed_parameters ( ) {
352
+ let mut router = Router :: new ( ) ;
353
+
354
+ router. add ( "/foo/:/bar" , "test" . to_string ( ) ) ;
355
+ router. add ( "/foo/:bar/*" , "test2" . to_string ( ) ) ;
356
+ let m = router. recognize ( "/foo/test/bar" ) . unwrap ( ) ;
357
+ assert_eq ! ( * m. handler, "test" ) ;
358
+ assert_eq ! ( m. params, Params :: new( ) ) ;
359
+
360
+ let m = router. recognize ( "/foo/test/blah" ) . unwrap ( ) ;
361
+ assert_eq ! ( * m. handler, "test2" ) ;
362
+ assert_eq ! ( m. params, params( "bar" , "test" ) ) ;
363
+ }
364
+
348
365
#[ allow( dead_code) ]
349
366
fn params ( key : & str , val : & str ) -> Params {
350
367
let mut map = Params :: new ( ) ;
0 commit comments