actix_service

# Trait ServiceFactory

source

    pub trait ServiceFactory<Req> {
        type Response;
        type Error;
        type Config;
        type Service: Service<Req, Response = Self::Response, Error = Self::Error>;
        type InitError;
        type Future: Future<Output = Result<Self::Service, Self::InitError>>;

        // Required method
        fn new_service(&self, cfg: Self::Config) -> Self::Future;
    }

Expand description

Factory for creating `Service`s.

This is useful for cases where new `Service`s must be produced. One case is a TCP server listener: a listener accepts new connections, constructs a new `Service` for each using the `ServiceFactory` trait, and uses the new `Service` to process inbound requests on that new connection.

`Config` is a service factory configuration type.

Simple factories may be able to use `fn_factory` or `fn_factory_with_config` to reduce boilerplate.

## Required Associated Types§

source

#### type Response

Responses given by the created services.

source

#### type Error

Errors produced by the created services.

source

#### type Config

Service factory configuration.

source

#### type Service: Service<Req, Response = Self::Response, Error = Self::Error>

The kind of `Service` created by this factory.

source

#### type InitError

Errors potentially raised while building a service.

source

#### type Future: Future<Output = Result<Self::Service, Self::InitError>>

The future of the `Service` instance.g

## Required Methods§

source

#### fn new_service(&self, cfg: Self::Config) -> Self::Future

Create and return a new service asynchronously.

## Implementations on Foreign Types§

source §

### impl<S, Req> ServiceFactory<Req> for Rc<S>
where S: ServiceFactory<Req>,

source §

#### type Response = <S as ServiceFactory<Req>>::Response

source §

#### type Error = <S as ServiceFactory<Req>>::Error

source §

#### type Config = <S as ServiceFactory<Req>>::Config

source §

#### type Service = <S as ServiceFactory<Req>>::Service

source §

#### type InitError = <S as ServiceFactory<Req>>::InitError

source §

#### type Future = <S as ServiceFactory<Req>>::Future

source §

#### fn new_service(&self, cfg: S::Config) -> S::Future

source §

### impl<S, Req> ServiceFactory<Req> for Arc<S>
where S: ServiceFactory<Req>,

source §

#### type Response = <S as ServiceFactory<Req>>::Response

source §

#### type Error = <S as ServiceFactory<Req>>::Error

source §

#### type Config = <S as ServiceFactory<Req>>::Config

source §

#### type Service = <S as ServiceFactory<Req>>::Service

source §

#### type InitError = <S as ServiceFactory<Req>>::InitError

source §

#### type Future = <S as ServiceFactory<Req>>::Future

source §

#### fn new_service(&self, cfg: S::Config) -> S::Future

## Implementors§

source §

### impl<C, Req, Res, Err, InitErr> ServiceFactory<Req> for BoxServiceFactory<C, Req, Res, Err, InitErr>
where Req: 'static, Res: 'static, Err: 'static, InitErr: 'static,

source §

#### type Response = Res

source §

#### type Error = Err

source §

#### type Config = C

source §

#### type Service = Box<dyn Service<Req, Error = Err, Response = Res, Future = Pin<Box<dyn Future<Output = Result<Res, Err>>>>>>

source §

#### type InitError = InitErr

source §

#### type Future = Pin<Box<dyn Future<Output = Result<<BoxServiceFactory<C, Req, Res, Err, InitErr> as ServiceFactory<Req>>::Service, InitErr>>>>

source §

### impl<T, S, Req> ServiceFactory<Req> for ApplyTransform<T, S, Req>
where S: ServiceFactory<Req>, T: Transform<S::Service, Req, InitError = S::InitError>,

source §

#### type Response = <T as Transform<<S as ServiceFactory<Req>>::Service, Req>>::Response

source §

#### type Error = <T as Transform<<S as ServiceFactory<Req>>::Service, Req>>::Error

source §

#### type Config = <S as ServiceFactory<Req>>::Config

source §

#### type Service = <T as Transform<<S as ServiceFactory<Req>>::Service, Req>>::Transform

source §

#### type InitError = <T as Transform<<S as ServiceFactory<Req>>::Service, Req>>::InitError

source §

#### type Future = ApplyTransformFuture<T, S, Req>