From a0e2d926e6b76275a217a4b2cd60d18cc02cca02 Mon Sep 17 00:00:00 2001 From: Nikolay Kim Date: Fri, 22 Feb 2019 13:20:52 -0800 Subject: [PATCH] add fn_nservice --- actix-service/src/fn_service.rs | 32 +++++++++++++++++++++----------- actix-service/src/lib.rs | 2 +- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/actix-service/src/fn_service.rs b/actix-service/src/fn_service.rs index 14db4dea..9bdedcd0 100644 --- a/actix-service/src/fn_service.rs +++ b/actix-service/src/fn_service.rs @@ -66,6 +66,15 @@ where } } +/// Create `NewService` for function that can act as Service +pub fn fn_nservice(f: F) -> FnNewService +where + F: FnMut(Req) -> Out + Clone, + Out: IntoFuture, +{ + FnNewService::new(f) +} + pub struct FnNewService where F: FnMut(Req) -> Out, @@ -113,17 +122,7 @@ where } } -impl IntoNewService, ()> for F -where - F: Fn() -> R + Clone, - R: IntoFuture, - S: Service, -{ - fn into_new_service(self) -> FnNewServiceNoConfig { - FnNewServiceNoConfig::new(self) - } -} - +/// Converter for `Fn() -> Future` fn pub struct FnNewServiceNoConfig where F: Fn() -> R + Clone, @@ -173,3 +172,14 @@ where Self::new(self.f.clone()) } } + +impl IntoNewService, ()> for F +where + F: Fn() -> R + Clone, + R: IntoFuture, + S: Service, +{ + fn into_new_service(self) -> FnNewServiceNoConfig { + FnNewServiceNoConfig::new(self) + } +} diff --git a/actix-service/src/lib.rs b/actix-service/src/lib.rs index 73dbcd50..c1a94479 100644 --- a/actix-service/src/lib.rs +++ b/actix-service/src/lib.rs @@ -24,7 +24,7 @@ use self::and_then_apply::{AndThenTransform, AndThenTransformNewService}; use self::and_then_apply_fn::{AndThenApply, AndThenApplyNewService}; pub use self::apply::{Apply, ApplyNewService}; pub use self::blank::{Blank, BlankNewService}; -pub use self::fn_service::{FnNewService, FnService}; +pub use self::fn_service::{fn_nservice, FnNewService, FnService}; pub use self::fn_transform::{FnNewTransform, FnTransform}; pub use self::from_err::{FromErr, FromErrNewService}; pub use self::map::{Map, MapNewService};