@@ -12,7 +12,7 @@ use router::{Router, Match};
12
12
use conduit:: { Method , Handler , Request , Response } ;
13
13
14
14
pub struct RouteBuilder {
15
- routers : HashMap < Method , Router < Box < Handler + ' static > > >
15
+ routers : HashMap < Method , Router < Box < Handler + ' static + Share > > >
16
16
}
17
17
18
18
macro_rules! method_map(
@@ -30,51 +30,59 @@ impl RouteBuilder {
30
30
RouteBuilder { routers : HashMap :: new ( ) }
31
31
}
32
32
33
- pub fn recognize < ' a > ( & ' a self , method : & Method ,
34
- path : & str ) -> Result < Match < & ' a Box < Handler + ' static > > , String > {
33
+ pub fn recognize < ' a > ( & ' a self , method : & Method , path : & str )
34
+ -> Result < Match < & ' a Box < Handler + ' static + Share > > , String >
35
+ {
35
36
match self . routers . find ( method) {
36
37
None => Err ( format ! ( "No router found for {}" , method) ) ,
37
38
Some ( router) => router. recognize ( path)
38
39
}
39
40
}
40
41
41
- pub fn map < ' a , H : ' static + Handler > ( & ' a mut self ,
42
- method : Method , pattern : & str , handler : H )
43
- -> & ' a mut RouteBuilder
42
+ pub fn map < ' a , H : ' static + Handler + Share > ( & ' a mut self ,
43
+ method : Method ,
44
+ pattern : & str ,
45
+ handler : H )
46
+ -> & ' a mut RouteBuilder
44
47
{
45
48
{
46
49
let router = self . routers . find_or_insert_with ( method, |_| Router :: new ( ) ) ;
47
- router. add ( pattern, box handler as Box < Handler + ' static > ) ;
50
+ router. add ( pattern, box handler as Box < Handler + ' static + Share > ) ;
48
51
}
49
52
self
50
53
}
51
54
52
- pub fn get < ' a , H : ' static + Handler > ( & ' a mut self , pattern : & str , handler : H )
53
- -> & ' a mut RouteBuilder
55
+ pub fn get < ' a , H : ' static + Handler + Share > ( & ' a mut self , pattern : & str ,
56
+ handler : H )
57
+ -> & ' a mut RouteBuilder
54
58
{
55
59
self . map ( conduit:: Get , pattern, handler)
56
60
}
57
61
58
- pub fn post < ' a , H : ' static + Handler > ( & ' a mut self , pattern : & str , handler : H )
59
- -> & ' a mut RouteBuilder
62
+ pub fn post < ' a , H : ' static + Handler + Share > ( & ' a mut self , pattern : & str ,
63
+ handler : H )
64
+ -> & ' a mut RouteBuilder
60
65
{
61
66
self . map ( conduit:: Post , pattern, handler)
62
67
}
63
68
64
- pub fn put < ' a , H : ' static + Handler > ( & ' a mut self , pattern : & str , handler : H )
65
- -> & ' a mut RouteBuilder
69
+ pub fn put < ' a , H : ' static + Handler + Share > ( & ' a mut self , pattern : & str ,
70
+ handler : H )
71
+ -> & ' a mut RouteBuilder
66
72
{
67
73
self . map ( conduit:: Put , pattern, handler)
68
74
}
69
75
70
- pub fn delete < ' a , H : ' static + Handler > ( & ' a mut self , pattern : & str , handler : H )
71
- -> & ' a mut RouteBuilder
76
+ pub fn delete < ' a , H : ' static + Handler + Share > ( & ' a mut self , pattern : & str ,
77
+ handler : H )
78
+ -> & ' a mut RouteBuilder
72
79
{
73
80
self . map ( conduit:: Delete , pattern, handler)
74
81
}
75
82
76
- pub fn head < ' a , H : ' static + Handler > ( & ' a mut self , pattern : & str , handler : H )
77
- -> & ' a mut RouteBuilder
83
+ pub fn head < ' a , H : ' static + Handler + Share > ( & ' a mut self , pattern : & str ,
84
+ handler : H )
85
+ -> & ' a mut RouteBuilder
78
86
{
79
87
self . map ( conduit:: Head , pattern, handler)
80
88
}
0 commit comments