Trait runtime_injector::ServiceFactory[][src]

pub trait ServiceFactory<D>: Service {
    type Result: Service;
    fn invoke(
        &mut self,
        injector: &Injector,
        request_info: &RequestInfo
    ) -> InjectResult<Self::Result>; }
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
) -> InjectResult<Self::Result>
[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
    D: Service,
    R: Service,
    E: Service + Error,
    F: ServiceFactory<D, Result = Result<R, E>>, 
[src]

type Result = R

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

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

type Result = F::Output

fn invoke(
    &mut self,
    injector: &Injector,
    request_info: &RequestInfo
) -> InjectResult<Self::Result>
[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
    F: Service + FnMut(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R,
    R: Service,
    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::Output

fn invoke(
    &mut self,
    injector: &Injector,
    request_info: &RequestInfo
) -> InjectResult<Self::Result>
[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
    F: Service + FnMut(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R,
    R: Service,
    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::Output

fn invoke(
    &mut self,
    injector: &Injector,
    request_info: &RequestInfo
) -> InjectResult<Self::Result>
[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
    F: Service + FnMut(T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R,
    R: Service,
    T2: Request,
    T3: Request,
    T4: Request,
    T5: Request,
    T6: Request,
    T7: Request,
    T8: Request,
    T9: Request,
    T10: Request,
    T11: Request
[src]

type Result = F::Output

fn invoke(
    &mut self,
    injector: &Injector,
    request_info: &RequestInfo
) -> InjectResult<Self::Result>
[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
    F: Service + FnMut(T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R,
    R: Service,
    T3: Request,
    T4: Request,
    T5: Request,
    T6: Request,
    T7: Request,
    T8: Request,
    T9: Request,
    T10: Request,
    T11: Request
[src]

type Result = F::Output

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

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

type Result = F::Output

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

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

type Result = F::Output

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

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

type Result = F::Output

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

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

type Result = F::Output

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

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

type Result = F::Output

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

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

type Result = F::Output

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

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

type Result = F::Output

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

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

type Result = F::Output

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

Loading content...