From 9b3f1b74344d8a7a8cf03331cf58786cb891b99c Mon Sep 17 00:00:00 2001 From: Zach Johnson Date: Thu, 19 Nov 2020 13:05:53 -0800 Subject: [PATCH] rusty-gd: make RegistryBuilder follow the builder pattern Bug: 171749953 Tag: #gd-refactor Test: gd/cert/run --rhost SimpleHalTest Change-Id: I0f32438926212a99a10d429922cc046d49b86860 --- gd/rust/facade/src/lib.rs | 6 +----- gd/rust/gddi-macros/src/lib.rs | 7 ++++--- gd/rust/gddi/src/lib.rs | 10 ++++++---- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/gd/rust/facade/src/lib.rs b/gd/rust/facade/src/lib.rs index ff0718062..a2ace15cd 100644 --- a/gd/rust/facade/src/lib.rs +++ b/gd/rust/facade/src/lib.rs @@ -104,11 +104,7 @@ impl FacadeServiceManager { 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 { diff --git a/gd/rust/gddi-macros/src/lib.rs b/gd/rust/gddi-macros/src/lib.rs index 44d071f8c..dcb851264 100644 --- a/gd/rust/gddi-macros/src/lib.rs +++ b/gd/rust/gddi-macros/src/lib.rs @@ -139,11 +139,12 @@ pub fn module(item: TokenStream) -> TokenStream { 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() diff --git a/gd/rust/gddi/src/lib.rs b/gd/rust/gddi/src/lib.rs index 7ae5c592b..dcaba8b43 100644 --- a/gd/rust/gddi/src/lib.rs +++ b/gd/rust/gddi/src/lib.rs @@ -45,17 +45,19 @@ impl RegistryBuilder { } /// Registers a module with this registry - pub fn register_module(&mut self, init: F) + pub fn register_module(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(&mut self, f: ProviderFnBox) { + pub fn register_provider(mut self, f: ProviderFnBox) -> Self { self.providers .insert(TypeId::of::(), Provider { f: Arc::new(f) }); + + self } /// Construct the Registry from this builder -- 2.11.0