Remove FnService for now
Seems like it may not show up that often in practice, so let's cut down on scope and concepts.
This commit is contained in:
parent
88962e3d2f
commit
cbf48a2b8f
41
src/lib.rs
41
src/lib.rs
|
@ -210,47 +210,6 @@ impl<S: NewService + ?Sized> NewService for Rc<S> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A service implemented by a closure.
|
|
||||||
pub struct FnService<F, R> {
|
|
||||||
f: F,
|
|
||||||
_ty: PhantomData<fn() -> R>, // don't impose Sync on R
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Returns a `Service` backed by the given closure.
|
|
||||||
pub fn fn_service<F, R, S>(f: F) -> FnService<F, R>
|
|
||||||
where F: Fn(R) -> S,
|
|
||||||
S: IntoFuture,
|
|
||||||
{
|
|
||||||
FnService::new(f)
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<F, R, S> FnService<F, R>
|
|
||||||
where F: Fn(R) -> S,
|
|
||||||
S: IntoFuture,
|
|
||||||
{
|
|
||||||
/// Create and return a new `FnService` backed by the given function.
|
|
||||||
pub fn new(f: F) -> FnService<F, R> {
|
|
||||||
FnService {
|
|
||||||
f: f,
|
|
||||||
_ty: PhantomData,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<F, R, S> Service for FnService<F, R>
|
|
||||||
where F: Fn(R) -> S,
|
|
||||||
S: IntoFuture
|
|
||||||
{
|
|
||||||
type Request = R;
|
|
||||||
type Response = S::Item;
|
|
||||||
type Error = S::Error;
|
|
||||||
type Future = S::Future;
|
|
||||||
|
|
||||||
fn call(&self, req: R) -> Self::Future {
|
|
||||||
(self.f)(req).into_future()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<S: Service + ?Sized> Service for Box<S> {
|
impl<S: Service + ?Sized> Service for Box<S> {
|
||||||
type Request = S::Request;
|
type Request = S::Request;
|
||||||
type Response = S::Response;
|
type Response = S::Response;
|
||||||
|
|
Loading…
Reference in New Issue