Skip to content

Commit 2c2c27d

Browse files
committed
Restrict errors to Showable
1 parent cadc84a commit 2c2c27d

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

src/conduit.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use std::collections::HashMap;
44
use std::io::net::ip::IpAddr;
55
use std::hash::Hash;
66
use std::any::Any;
7+
use std::fmt::Show;
78

89
#[deriving(PartialEq, Show, Clone)]
910
pub enum Scheme {
@@ -113,12 +114,12 @@ pub struct Response {
113114

114115
/// A Handler takes a request and returns a response or an error.
115116
/// By default, a bare function implements `Handler`.
116-
pub trait Handler<E> {
117-
fn call(&self, request: &mut Request) -> Result<Response, E>;
117+
pub trait Handler {
118+
fn call(&self, request: &mut Request) -> Result<Response, Box<Show>>;
118119
}
119120

120-
impl<E> Handler<E> for fn(&mut Request) -> Result<Response, E> {
121-
fn call(&self, request: &mut Request) -> Result<Response, E> {
122-
(*self)(request)
121+
impl<T: 'static + Show> Handler for fn(&mut Request) -> Result<Response, T> {
122+
fn call(&self, request: &mut Request) -> Result<Response, Box<Show>> {
123+
{ (*self)(request) }.map_err(|e| box e as Box<Show>)
123124
}
124125
}

0 commit comments

Comments
 (0)