Rustyinject是Rust的编译时依赖注入DI库


依赖注入是一种用于实现IoC(控制反转)的设计模式,允许以灵活和解耦的方式创建,存储和检索依赖项。这为DI提供了一个容器,可以:

  • 存储单例实例并提供它们。
  • 提供单例的克隆实例。
  • 使用工厂方法创建实例。

使用
下面是一个如何使用DI容器的例子:

use rustyinject::{DependencyContainer, injector::{factories::ConstructorFactory, Injector}};

struct MyService {
    // Some fields
}

impl ConstructorFactory for MyService {
    type Dependencies<'a> = ();
// Specify your dependencies here.

    fn build(dependencies: Self::Dependencies<'_>) -> Self {
        Self {
           
// Some fields
        }
    }
}

let container = DependencyContainer::default()
    .with_constructor_factory::<MyService>();

let my_service: MyService = (&container).inject();