#ioc #injection #dependencies

nightly wonderbox

简约的 IoC 库

5 个版本 (破坏性更新)

0.5.0 2019 年 6 月 7 日
0.4.0 2019 年 5 月 11 日
0.3.0 2019 年 5 月 8 日
0.2.0 2019 年 5 月 8 日
0.1.0 2019 年 5 月 6 日

#16#dependencies

MIT/Apache 许可

19KB
275 行代码(不含注释)

Wonderbox

Build Status Latest Version Documentation

一个简约的 IoC 库。

示例

use wonderbox::Container;

trait Foo {}

#[derive(Debug, Default)]
struct FooImpl {
    stored_string: String,
}

impl FooImpl {
    fn new(stored_string: String) -> Self {
        Self { stored_string }
    }
}

impl Foo for FooImpl {}

#[test]
fn test() {
    let mut container = Container::new();
    container.register(|_| "foo".to_string());
    container.register(|container| Box::new(FooImpl::new(container.resolve())) as Box<dyn Foo>);

    let foo = container.resolve::<Box<dyn Foo>>();
}


lib.rs:

一个简约的 IoC 库。

示例

use wonderbox::Container;

trait Foo {}

#[derive(Debug, Default)]
struct FooImpl {
    stored_string: String,
}

impl FooImpl {
    fn new(stored_string: String) -> Self {
        Self { stored_string }
    }
}

impl Foo for FooImpl {}

let mut container = Container::new();
container.register(|_| "foo".to_string());
container.register(|container| Box::new(FooImpl::new(container.resolve())) as Box<dyn Foo>);

let foo = container.try_resolve::<Box<dyn Foo>>();
assert!(foo.is_some())

无运行时依赖