1 个不稳定版本
0.1.0 | 2020年12月10日 |
---|
#10 in #injector
6KB
117 行(不包括注释)
Rust 的依赖注入
目前处于概念验证阶段。它目前不支持
- 向注入器提供变量
- 将变量注入到注入器中的其他方法。
- 在定义注入规则时返回引用。
注意:它通过复制所有组件来工作,因此您必须返回 Arc<T>
或 Rc<T>
。这是因为注入器不知道它将被注入多长时间。
使用方法
fn main() {
let injector = ok_injector();
let my_handler = injector.inject(handler);
my_handler()
}
pub trait Db {
fn call(&self);
}
#[inject]
pub fn handler(#[inject] db: Arc<dyn Db>) {
db.call()
}
struct OkDb {}
impl Db for OkDb {
fn call(&self) {}
}
#[injector]
fn ok_injector() {
fn db() -> Arc<dyn Db> {
Arc::new(OkDb {})
}
}
依赖项
~1.5MB
~35K SLoC