ferrunix-core-0.1.0 has been yanked.
Ferrunix
A simple, idiomatic, and lightweight dependency injection framework for Rust.
[]
= "0"
Compiler support: requires rustc 1.62+
Example
use ;
A simple, idiomatic, and lightweight dependency injection framework for Rust.
[dependencies]
ferrunix = "0"
Compiler support: requires rustc 1.62+
use ferrunix::{Registry, Transient};
#[derive(Default, Debug)]
pub struct Logger {}
impl Logger {
pub fn info(&self, message: &str) {
println!("INFO: {message}");
}
}
#[derive(Debug)]
pub struct Worker {
logger: Box<Logger>,
}
impl Worker {
pub fn new(logger: Box<Logger>) -> Self {
Self { logger }
}
pub fn do_work(&self) {
self.logger.info("doing something ...");
}
}
fn main() {
let mut registry = Registry::empty();
registry.transient(|| Logger::default());
registry
.with_deps::<_, (Transient<Logger>,)>()
.transient(|(logger,)| Worker::new(logger));
let worker = registry.get_transient::<Worker>().unwrap();
worker.do_work();
}