Trait runtime_injector_actix::ServiceFactory[][src]

pub trait ServiceFactory<D>: Service {
    type Result: Service;
    fn invoke(
        &mut self,
        injector: &Injector,
        request_info: &RequestInfo
    ) -> Result<Self::Result, InjectError>; }
Expand description

A factory for creating instances of a service. All functions of arity 12 or less are automatically service factories if the arguments to that function are valid service requests and the return value is a valid service type.

Type parameters

  • D - Tuple of this service’s dependencies.

Example

use runtime_injector::{Injector, RequestInfo, ServiceFactory, Svc};

struct Foo;
struct Bar;

fn factory(foo: Svc<Foo>) -> Bar {
    todo!()
}
let injector: Injector = todo!();
factory.invoke(&injector, &RequestInfo::new());

Associated Types

type Result: Service[src]

Expand description

The resulting service from invoking this service factory.

Loading content...

Required methods

fn invoke(
    &mut self,
    injector: &Injector,
    request_info: &RequestInfo
) -> Result<Self::Result, InjectError>
[src]

Expand description

Invokes this service factory, creating an instance of the service.

Loading content...

Implementors

impl<D, R, E, F> ServiceFactory<D> for FallibleServiceFactory<D, R, E, F> where
    R: Service,
    E: Service + Error,
    F: ServiceFactory<D, Result = Result<R, E>>,
    D: Service
[src]

type Result = R

pub fn invoke(
    &mut self,
    injector: &Injector,
    request_info: &RequestInfo
) -> Result<<FallibleServiceFactory<D, R, E, F> as ServiceFactory<D>>::Result, InjectError>
[src]

impl<F, R> ServiceFactory<()> for F where
    R: Service,
    F: Service + FnMut() -> R, 
[src]

type Result = <F as FnOnce()>::Output

pub fn invoke(
    &mut self,
    injector: &Injector,
    request_info: &RequestInfo
) -> Result<<F as ServiceFactory<()>>::Result, InjectError>
[src]

impl<F, R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> ServiceFactory<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)> for F where
    R: Service,
    F: Service + FnMut(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R,
    T0: Request,
    T1: Request,
    T2: Request,
    T3: Request,
    T4: Request,
    T5: Request,
    T6: Request,
    T7: Request,
    T8: Request,
    T9: Request,
    T10: Request,
    T11: Request
[src]

type Result = <F as FnOnce(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)>::Output

pub fn invoke(
    &mut self,
    injector: &Injector,
    request_info: &RequestInfo
) -> Result<<F as ServiceFactory<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)>>::Result, InjectError>
[src]

impl<F, R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> ServiceFactory<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)> for F where
    R: Service,
    F: Service + FnMut(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R,
    T1: Request,
    T2: Request,
    T3: Request,
    T4: Request,
    T5: Request,
    T6: Request,
    T7: Request,
    T8: Request,
    T9: Request,
    T10: Request,
    T11: Request
[src]

type Result = <F as FnOnce(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)>::Output

pub fn invoke(
    &mut self,
    injector: &Injector,
    request_info: &RequestInfo
) -> Result<<F as ServiceFactory<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)>>::Result, InjectError>
[src]

impl<F, R, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> ServiceFactory<(T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)> for F where
    R: Service,
    F: Service + FnMut(T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R,
    T2: Request,
    T3: Request,
    T4: Request,
    T5: Request,
    T6: Request,
    T7: Request,
    T8: Request,
    T9: Request,
    T10: Request,
    T11: Request
[src]

type Result = <F as FnOnce(T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)>::Output

pub fn invoke(
    &mut self,
    injector: &Injector,
    request_info: &RequestInfo
) -> Result<<F as ServiceFactory<(T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)>>::Result, InjectError>
[src]

impl<F, R, T3, T4, T5, T6, T7, T8, T9, T10, T11> ServiceFactory<(T3, T4, T5, T6, T7, T8, T9, T10, T11)> for F where
    R: Service,
    F: Service + FnMut(T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R,
    T3: Request,
    T4: Request,
    T5: Request,
    T6: Request,
    T7: Request,
    T8: Request,
    T9: Request,
    T10: Request,
    T11: Request
[src]

type Result = <F as FnOnce(T3, T4, T5, T6, T7, T8, T9, T10, T11)>::Output

pub fn invoke(
    &mut self,
    injector: &Injector,
    request_info: &RequestInfo
) -> Result<<F as ServiceFactory<(T3, T4, T5, T6, T7, T8, T9, T10, T11)>>::Result, InjectError>
[src]

impl<F, R, T4, T5, T6, T7, T8, T9, T10, T11> ServiceFactory<(T4, T5, T6, T7, T8, T9, T10, T11)> for F where
    R: Service,
    F: Service + FnMut(T4, T5, T6, T7, T8, T9, T10, T11) -> R,
    T4: Request,
    T5: Request,
    T6: Request,
    T7: Request,
    T8: Request,
    T9: Request,
    T10: Request,
    T11: Request
[src]

type Result = <F as FnOnce(T4, T5, T6, T7, T8, T9, T10, T11)>::Output

pub fn invoke(
    &mut self,
    injector: &Injector,
    request_info: &RequestInfo
) -> Result<<F as ServiceFactory<(T4, T5, T6, T7, T8, T9, T10, T11)>>::Result, InjectError>
[src]

impl<F, R, T5, T6, T7, T8, T9, T10, T11> ServiceFactory<(T5, T6, T7, T8, T9, T10, T11)> for F where
    R: Service,
    F: Service + FnMut(T5, T6, T7, T8, T9, T10, T11) -> R,
    T5: Request,
    T6: Request,
    T7: Request,
    T8: Request,
    T9: Request,
    T10: Request,
    T11: Request
[src]

type Result = <F as FnOnce(T5, T6, T7, T8, T9, T10, T11)>::Output

pub fn invoke(
    &mut self,
    injector: &Injector,
    request_info: &RequestInfo
) -> Result<<F as ServiceFactory<(T5, T6, T7, T8, T9, T10, T11)>>::Result, InjectError>
[src]

impl<F, R, T6, T7, T8, T9, T10, T11> ServiceFactory<(T6, T7, T8, T9, T10, T11)> for F where
    R: Service,
    F: Service + FnMut(T6, T7, T8, T9, T10, T11) -> R,
    T6: Request,
    T7: Request,
    T8: Request,
    T9: Request,
    T10: Request,
    T11: Request
[src]

type Result = <F as FnOnce(T6, T7, T8, T9, T10, T11)>::Output

pub fn invoke(
    &mut self,
    injector: &Injector,
    request_info: &RequestInfo
) -> Result<<F as ServiceFactory<(T6, T7, T8, T9, T10, T11)>>::Result, InjectError>
[src]

impl<F, R, T7, T8, T9, T10, T11> ServiceFactory<(T7, T8, T9, T10, T11)> for F where
    R: Service,
    F: Service + FnMut(T7, T8, T9, T10, T11) -> R,
    T7: Request,
    T8: Request,
    T9: Request,
    T10: Request,
    T11: Request
[src]

type Result = <F as FnOnce(T7, T8, T9, T10, T11)>::Output

pub fn invoke(
    &mut self,
    injector: &Injector,
    request_info: &RequestInfo
) -> Result<<F as ServiceFactory<(T7, T8, T9, T10, T11)>>::Result, InjectError>
[src]

impl<F, R, T8, T9, T10, T11> ServiceFactory<(T8, T9, T10, T11)> for F where
    R: Service,
    F: Service + FnMut(T8, T9, T10, T11) -> R,
    T8: Request,
    T9: Request,
    T10: Request,
    T11: Request
[src]

type Result = <F as FnOnce(T8, T9, T10, T11)>::Output

pub fn invoke(
    &mut self,
    injector: &Injector,
    request_info: &RequestInfo
) -> Result<<F as ServiceFactory<(T8, T9, T10, T11)>>::Result, InjectError>
[src]

impl<F, R, T9, T10, T11> ServiceFactory<(T9, T10, T11)> for F where
    R: Service,
    F: Service + FnMut(T9, T10, T11) -> R,
    T9: Request,
    T10: Request,
    T11: Request
[src]

type Result = <F as FnOnce(T9, T10, T11)>::Output

pub fn invoke(
    &mut self,
    injector: &Injector,
    request_info: &RequestInfo
) -> Result<<F as ServiceFactory<(T9, T10, T11)>>::Result, InjectError>
[src]

impl<F, R, T10, T11> ServiceFactory<(T10, T11)> for F where
    R: Service,
    F: Service + FnMut(T10, T11) -> R,
    T10: Request,
    T11: Request
[src]

type Result = <F as FnOnce(T10, T11)>::Output

pub fn invoke(
    &mut self,
    injector: &Injector,
    request_info: &RequestInfo
) -> Result<<F as ServiceFactory<(T10, T11)>>::Result, InjectError>
[src]

impl<F, R, T11> ServiceFactory<(T11,)> for F where
    R: Service,
    F: Service + FnMut(T11) -> R,
    T11: Request
[src]

type Result = <F as FnOnce(T11)>::Output

pub fn invoke(
    &mut self,
    injector: &Injector,
    request_info: &RequestInfo
) -> Result<<F as ServiceFactory<(T11,)>>::Result, InjectError>
[src]

Loading content...