pub struct StringArg(String);
pub struct IntArg(i32);
pub struct Dummy {
string: StringArg,
int: IntArg,
}
#[derive(Default)]
pub struct DummyProvider;
#[chassis::module]
impl DummyProvider {
pub fn provide_string() -> StringArg {
StringArg("Test".to_string())
}
pub fn provide_int() -> IntArg {
IntArg(42)
}
pub fn provide_dummy(string: StringArg, int: IntArg) -> Dummy {
Dummy { string, int }
}
}
#[chassis::injector(modules = [DummyProvider])]
pub trait DummyFactory {
fn resolve_dummy(&self) -> Dummy;
}
#[test]
fn check() {
let injector = <dyn DummyFactory>::new().unwrap();
let dummy = injector.resolve_dummy();
assert_eq!("Test", &dummy.string.0);
assert_eq!(42, dummy.int.0);
}