A simple DI (Dependency Injection) singleton object storage for providing thread-safe shared object management.
toml
[dependencies]
simpledi-rs = "*"
DIContainerTrait
)create_dep!
macroDependencyInjectTrait
via inject_dep!
macro```rust
extern crate simpledi_rs;
use simpledi_rs::di::{DIContainer, DIContainerTrait, DependencyInjectTrait}; use std::sync::Arc;
struct DIAwareStruct(Option
impl DIAwareStruct { fn new() -> Self { Self { 0: None } } }
impl DependencyInjectTrait for DIAwareStruct {
fn inject(&mut self, container: Arc
fn main() { let mut container = DIContainer::new(); // (1)
// add obj to DI
create_dep!(DIAwareStruct::new(), container); // (2)
// inject DI container to aware objects
let container_arc = container.init().unwrap(); // (3)
inject_dep!(DIAwareStruct, container_arc.clone()); // (4)
// get container from aware objects
let injected_obj = container_arc.get::<DIAwareStruct>().unwrap();
} ```