4 个版本

使用旧 Rust 2015

0.1.2 2015年1月3日
0.1.1 2014年12月29日
0.1.0 2014年12月29日
0.0.1 2014年12月25日

#40 in #injection

MIT 许可证

74KB
1.5K SLoC

Rust 的依赖注入容器

Build Status

这个库实现了 Rust 的依赖注入容器,模仿了在其他语言和框架中实现的方式。

与其他流行实现不同,它通过使用 one_of 方法提供了一种简单的方式将工厂组合在一起。

示例

let mut registry = di::Registry::new();

registry
    .one_of("values", || -> i32 { 1 })
    .with_id("a")
    .insert();

registry
    .one_of("values", |a: i32| -> i32 { a + 2 })
    .with_arg("a")
    .insert();

match registry.compile() {
    Ok(container) => {
        if let Some(a) = container.get::<Vec<i32>>("values") {
            assert_eq!(vec![ 1, 1 + 2 ], a.take());
        }
    },
    Err(errors) => di::error_printer::pretty_print(&errors),
}

当然,未组合的依赖项也是可用的。

文档

使用方法

将此内容放入您的 Cargo.toml

[dependencies]
di = "*"

并将其放在您的 crate 根目录下

extern crate di;

许可证

MIT

依赖项

~54KB