Attribute Macro lockjaw::builder_modules [−][src]
#[builder_modules]
Expand description
Annotates a struct that contains modules
instances to be installed in a
component
with the builder_modules
field. If a module contains fields, it cannot be
auto generated and must be explicitly provided to
COMPONENT.build()
The annotated struct will become the parameter for
COMPONENT.build()
If a module does not contain any field, it can be auto generated by lockjaw, and can be listed in
the modules
field instead.
struct StringModule { string : String } #[module] impl StringModule { #[provides] pub fn provide_string(&self) -> String { self.string.clone() } } #[builder_modules] pub struct MyBuilderModules { module : crate::StringModule, } #[component(builder_modules : crate::MyBuilderModules)] pub trait MyComponent { fn string(&self) -> String; } fn main() { let component = MyComponent::build(MyBuilderModules{ module: StringModule{ string: "foo".to_owned() } }); assert_eq!("foo", component.string()); } epilogue!();