[−][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. |