Resolver

Trait Resolver 

Source
pub trait Resolver<'a, Cont, T, Infer> {
    // Required method
    fn resolve(&'a self) -> T;
}
Expand description

This trait is used to resolve some object from service provider. Generic T used only to avoid absence of specialization and for working of type inference. You must implement it yourself only when you implement your own version of container.

For common usage you need only import it from teloc, and calling resolve method when you need to get a service from ServiceProvider.

Example:

use teloc::*;

struct Foo(u8);

#[inject]
fn new_foo() -> Foo {
    Foo(5)
}

let sp = ServiceProvider::new()
    .add_transient::<Foo>();

let foo: Foo = sp.resolve();

assert_eq!(foo.0, 5)

Required Methods§

Source

fn resolve(&'a self) -> T

Implementors§

Source§

impl<'a, Cont, T, U, SP, Index, Deps, Infer> Resolver<'a, ConvertContainer<Cont, T, U>, U, (Index, Deps, Infer)> for SP
where U: 'a, Deps: 'a, Cont: 'a, T: Into<U> + 'a, ConvertContainer<Cont, T, U>: ResolveContainer<'a, U, Deps>, SP: Selector<ConvertContainer<Cont, T, U>, Index> + GetDependencies<'a, Deps, Infer>,

Source§

impl<'a, T, SP, Index> Resolver<'a, InstanceContainer<T>, &'a T, Index> for SP

Source§

impl<'a, T, SP, Index> Resolver<'a, InstanceContainer<T>, T, Index> for SP

Source§

impl<'a, T, SP, Index, Deps, Infer> Resolver<'a, SingletonContainer<T>, &'a T, (Index, Deps, Infer)> for SP
where SingletonContainer<T>: ResolveContainer<'a, &'a T, Deps>, T: Dependency<Deps> + 'a, Deps: 'a, SP: GetDependencies<'a, Deps, Infer> + Selector<SingletonContainer<T>, Index>,

Source§

impl<'a, T, SP, Index, Deps, Infer> Resolver<'a, SingletonContainer<T>, T, (Index, Deps, Infer)> for SP
where SingletonContainer<T>: ResolveContainer<'a, &'a T, Deps>, T: Dependency<Deps> + DependencyClone + 'a, Deps: 'a, SP: GetDependencies<'a, Deps, Infer> + Selector<SingletonContainer<T>, Index>,

Source§

impl<'a, T, SP, Index, Deps, Infer> Resolver<'a, TransientContainer<T>, T, (Index, Deps, Infer)> for SP
where SP: Selector<TransientContainer<T>, Index> + GetDependencies<'a, Deps, Infer>, T: Dependency<Deps> + 'a, TransientContainer<T>: ResolveContainer<'a, T, Deps>,