2 个版本

1.0.0-beta.32022年7月22日

#11 in #inversion-of-control

每月37次下载

MIT/Apache

9KB
140

Easy DI 持续集成 cargo-badge license-badge

Rust 的简单依赖注入容器。

示例

代码

use std::sync::Arc;
use easy_di::{Container, ServiceProvider};
pub trait Animal {
    fn make_sound(&self);
}
#[derive(Clone)]
struct Dog;
impl Animal for Dog {
    fn make_sound(&self) {
        println!("woof woof!")
    }
}

fn main() {
    let mut container = Container::new();
    let animal: Arc<dyn Animal + Sync + Send> = Arc::new(Dog);
    container.inject(animal);
    let animal2 = container.find::<Arc<dyn Animal + Sync + Send>>();
    animal2.unwrap().make_sound();
}

贡献

本项目欢迎所有类型的贡献。没有哪项贡献是微不足道的!

如果您想为此项目做出贡献但不知道从何开始,或者需要与此项目相关的帮助,请随时通过以下邮箱联系我 https://www.eisberg-labs.com/(底部有联系表单)。

关于贡献的一些提示可以在 Contributing.md 中找到。

行为准则

本项目遵循 Rust 行为准则

许可证

MIT 许可证Apache 许可证 的条款下分发。

依赖

~0.5–1MB
~23K SLoC