teloc 0.2.0

Simple, compile-time DI framework for Rust
Documentation
use teloc::{inject, Dependency, Resolver, ServiceProvider};

struct NumberServiceOptions(i32);

trait NumberService {
    fn get_num(&self) -> i32;
}

struct ConstService {
    number: i32,
}
impl NumberService for ConstService {
    fn get_num(&self) -> i32 {
        self.number
    }
}
#[inject]
impl ConstService {
    fn new(options: &NumberServiceOptions) -> Self {
        ConstService { number: options.0 }
    }
}
impl From<Box<ConstService>> for Box<dyn NumberService> {
    fn from(x: Box<ConstService>) -> Self {
        x
    }
}

#[derive(Dependency)]
struct Controller {
    number_service: Box<dyn NumberService>,
}

#[test]
fn test() {
    let options = NumberServiceOptions(10);
    let container = ServiceProvider::new()
        .add_instance(options)
        .add_transient_c::<Box<dyn NumberService>, Box<ConstService>>()
        .add_transient::<Controller>();
    let controller: Controller = container.resolve();

    assert_eq!(controller.number_service.get_num(), 10);
}