1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use std::any::Any;
use request::SapperRequest as Request;
use response::SapperResponse as Response;
use app::Result;
pub trait SapperHandler: Send + Sync + Any {
fn handle(&self, &mut Request) -> Result<Response>;
}
impl<F> SapperHandler for F
where F: Send + Sync + Any + Fn(&mut Request) -> Result<Response> {
fn handle(&self, req: &mut Request) -> Result<Response> {
(*self)(req)
}
}
impl SapperHandler for Box<SapperHandler> {
fn handle(&self, req: &mut Request) -> Result<Response> {
(**self).handle(req)
}
}