Skip to content

Commit 8cb0bc2

Browse files
committed
Require the Share bound for handlers
1 parent 628b6d1 commit 8cb0bc2

File tree

1 file changed

+25
-17
lines changed

1 file changed

+25
-17
lines changed

src/conduit-router.rs

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use router::{Router, Match};
1212
use conduit::{Method, Handler, Request, Response};
1313

1414
pub struct RouteBuilder {
15-
routers: HashMap<Method, Router<Box<Handler + 'static>>>
15+
routers: HashMap<Method, Router<Box<Handler + 'static + Share>>>
1616
}
1717

1818
macro_rules! method_map(
@@ -30,51 +30,59 @@ impl RouteBuilder {
3030
RouteBuilder { routers: HashMap::new() }
3131
}
3232

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+
{
3536
match self.routers.find(method) {
3637
None => Err(format!("No router found for {}", method)),
3738
Some(router) => router.recognize(path)
3839
}
3940
}
4041

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
4447
{
4548
{
4649
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>);
4851
}
4952
self
5053
}
5154

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
5458
{
5559
self.map(conduit::Get, pattern, handler)
5660
}
5761

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
6065
{
6166
self.map(conduit::Post, pattern, handler)
6267
}
6368

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
6672
{
6773
self.map(conduit::Put, pattern, handler)
6874
}
6975

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
7279
{
7380
self.map(conduit::Delete, pattern, handler)
7481
}
7582

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
7886
{
7987
self.map(conduit::Head, pattern, handler)
8088
}

0 commit comments

Comments
 (0)