chassis 0.2.0

Compile-time dependency injection framework
Documentation
#![allow(dead_code)]

type Any = ();
type TypeId = ();
type Option = ();
type ProvideModule = ();
type Provider = ();
type IntrospectVisitor = ();
type DependenciesAccess = ();
type DependenciesVisitor = ();

#[derive(Default)]
pub struct Module;

#[chassis::module]
impl Module {
    pub fn provide_nothing() -> () {
        ()
    }
}

#[chassis::injector(modules = [Module])]
pub trait Injector {
    fn resolve_nothing(&self) -> ();
}

trait MyInjector {
    fn provide(&self) -> bool;
}

impl<T: Injector> MyInjector for T {
    fn provide(&self) -> bool {
        true
    }
}

#[test]
fn check() {
    let injector = <dyn Injector>::new().unwrap();
    injector.resolve_nothing();
    assert!(injector.provide());
}