[][src]Module inject::provider

Provides types

Providers are implementations that can resolve a types construction, given a Container, using the provide(_ref) methods.

When a provider provides a value, the provider implements Provider.

When a provider provides a reference, it implements RefProvider.

Examples

For convenience, Box, Rc and Arc types all implement RefProvider.

use ::inject::*;

let container = container![];

let boxed_value = Box::new(5);

assert_eq!(Ok(&5), boxed_value.provide(&container));

Arc also implements Provider using Arc::clone.

use std::sync::Arc;

use ::inject::*;
let arc = Arc::new(5isize);
let container = container![
    arc
];

assert_eq!(&5, get!(&container, Arc<isize>).unwrap().as_ref());

Closures that implement Fn(&Container) -> Result<T, InjectError> also serves as factory functions for providing values as they implement Provider.

use ::inject::*;

let container = container![
    |container: &Container| Ok(5usize)
];

assert_eq!(Ok(5), get!(&container, usize))

Traits

Provider

Value provider.

RefProvider

Reference provider.