6 个版本 (重大更新)
0.5.1 | 2022年1月30日 |
---|---|
0.5.0 | 2022年1月30日 |
0.4.0 | 2022年1月29日 |
0.3.0 | 2022年1月29日 |
0.1.0 | 2022年1月28日 |
#14 in #choice
每月下载 31 次
11KB
232 行代码(不含注释)
科瓦尔
一个非常简单的 Rust IOC 框架。运行时,无宏。您可以绑定类型到类型,以及容器到容器,以抽象实现选择。
用法
use koval::{Container, Injectable, InjectionError};
pub trait FooServiceTrait: Send + Sync {
fn foo_function(&self) -> bool;
}
pub type IFooService = Arc<dyn FooServiceTrait>;
pub struct FooServiceImpl {}
impl FooServiceTrait for FooServiceImpl {
fn foo_function(&self) -> bool {
true
}
}
impl Injectable<IFooService> for FooServiceImpl {
fn resolve_injectable(_: &Container) -> Result<IFooService, InjectionError> {
Ok(Arc::new(FooServiceImpl {}))
}
}
fn main() {
let container = Container::new()
.bind_singleton::<IFooService, FooServiceImpl>()
.build()
.expect("Container failed to build");
let foo_instance = container.resolve::<IFooService>().unwrap();
assert_eq!(foo_instance.foo_function(), true);
}
依赖项
~295–760KB
~18K SLoC