Attribute Macro nject_macro::module
source · #[module]Expand description
Declare a module to export internal types.
use nject::{injectable, provider};
mod sub {
use nject::{injectable, module};
#[injectable]
struct InternalType(#[inject(123)] i32); // Not visible outside of module.
#[injectable]
pub struct Facade<'a> {
hidden: &'a InternalType
}
#[injectable]
#[module]
pub struct Module {
#[export]
hidden: InternalType
}
}
#[injectable]
#[provider]
struct Provider {
#[import]
sub_mod: sub::Module
}
fn main() {
#[provider]
struct InitProvider;
let provider = InitProvider.provide::<Provider>();
let _facade = provider.provide::<sub::Facade>();
}