#ioc #di #dependency-injection

runtime_injector

运行时依赖注入容器

7 个不稳定版本 (3 个破坏性更新)

0.4.0 2021 年 5 月 14 日
0.3.0 2021 年 5 月 8 日
0.2.1 2021 年 5 月 5 日
0.2.0 2021 年 3 月 31 日
0.1.2 2021 年 3 月 28 日

#26 in #ioc

每月 35 次下载
用于 runtime_injector_actix

MIT/Apache 许可协议

145KB
2K SLoC

runtime_injector

Current version Current documentation

本库提供了一个功能强大、易于使用的控制反转(IoC)容器,重点在于用户体验和可配置性。

入门指南

首先,配置您的注入器

let module = define_module! {
    services = [MyService::new.transient()],
    interfaces = {
        dyn MyInterface = [MyInterfaceImpl::new.singleton()],
    },
};

let mut builder = Injector::builder();
builder.add_module(module);
builder.provide(constant(MyConfig));

接下来,创建您的注入器并从中请求服务

let injector = builder.build();
let my_service: Svc<MyService> = injector.get().unwrap();
let my_interface_impl: Svc<dyn MyInterface> = injector.get().unwrap();

// Since `MyService` is transient, we can also request an owned instance of it
let my_service: Box<MyService> = injector.get().unwrap();

最低支持的 Rust 版本

由于库仍在开发中,唯一支持的 Rust 版本是最新稳定版。该库可能在旧版本上也能工作,但没有保证。

许可证

本库的许可证为 MIT 或 Apache 2.0,您可以选择其中之一。

无运行时依赖

特性