Impl Service for Service trait object

This commit is contained in:
Carl Lerche 2016-10-02 13:34:49 -07:00
parent 4dfeaba1f5
commit 6d7cf21c02
1 changed files with 34 additions and 0 deletions

View File

@ -241,3 +241,37 @@ impl<F, R> Clone for SimpleService<F, R> {
}
}
}
impl<T, U, E, F> Service for Box<Service<Request = T, Response = U, Error = E, Future = F>>
where F: Future<Item = U, Error = E>
{
type Request = T;
type Response = U;
type Error = E;
type Future = F;
fn call(&self, request: T) -> F {
(**self).call(request)
}
fn poll_ready(&self) -> Async<()> {
(**self).poll_ready()
}
}
impl<T, U, E, F> Service for Box<Service<Request = T, Response = U, Error = E, Future = F> + Send + 'static>
where F: Future<Item = U, Error = E>
{
type Request = T;
type Response = U;
type Error = E;
type Future = F;
fn call(&self, request: T) -> F {
(**self).call(request)
}
fn poll_ready(&self) -> Async<()> {
(**self).poll_ready()
}
}