[−][src]Crate rdi
Dependency injection for the rust.
This is currently in state of proof-of-concept. It currently does not support
- providing variables to the injector
- injection of variable into other method in injector.
- returning references while defining injection rules.
Note: It works by cloing all components, so you have to return Arc<T>
or Rc<T>
. This is because the injector cannot know how much time it will
be injected.
Usage
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 {}) } }
Traits
Injectable | Do not implement this manually. Use |
Provider | Do not implement this manually |
Value | Do not implement this manually. Use |
Attribute Macros
inject | Make function arguments injectable. |
injector | Creates an injector. |