while let Some(cmd) = rx.recv().await {
match cmd {
LifecycleCommand::Start { req, done } => {
- let registry = {
- let mut builder = RegistryBuilder::new();
- builder.register_module(stack_module);
- Arc::new(builder.build())
- };
+ let registry = Arc::new(RegistryBuilder::new().register_module(stack_module).build());
registry.inject(local_rt.clone()).await;
if let Some(rc_port) = rootcanal_port {
let submodule_idents = module.submodules.iter();
let emitted_code = quote! {
#[doc(hidden)]
- pub fn #init_ident(builder: &mut gddi::RegistryBuilder) {
+ #[allow(missing_docs)]
+ pub fn #init_ident(builder: gddi::RegistryBuilder) -> gddi::RegistryBuilder {
// Register all providers on this module
- #(builder.register_provider::<#types>(Box::new(#provider_idents));)*
+ builder#(.register_provider::<#types>(Box::new(#provider_idents)))*
// Register all submodules on this module
- #(builder.register_module(#submodule_idents);)*
+ #(.register_module(#submodule_idents))*
}
};
emitted_code.into()
}
/// Registers a module with this registry
- pub fn register_module<F>(&mut self, init: F)
+ pub fn register_module<F>(self, init: F) -> Self
where
- F: Fn(&mut Self),
+ F: Fn(Self) -> Self,
{
- init(self);
+ init(self)
}
/// Registers a provider function with this registry
- pub fn register_provider<T: 'static>(&mut self, f: ProviderFnBox) {
+ pub fn register_provider<T: 'static>(mut self, f: ProviderFnBox) -> Self {
self.providers
.insert(TypeId::of::<T>(), Provider { f: Arc::new(f) });
+
+ self
}
/// Construct the Registry from this builder