From 0acd72140f5e1b854d6a30d27de11785b0be8a63 Mon Sep 17 00:00:00 2001 From: Martin Fischer <martin@push-f.com> Date: Thu, 25 Nov 2021 09:31:22 +0100 Subject: refactor: move variable declarations closer to usage --- src/lib.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 6f4a007..1cf086c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -95,15 +95,6 @@ pub fn dynamize(_attr: TokenStream, input: TokenStream) -> TokenStream { let mut original_trait = parse_macro_input!(input as ItemTrait); assert!(original_trait.auto_token.is_none()); - let original_trait_name = original_trait.ident.clone(); - - let mut objectifiable_methods: Vec<(Signature, SignatureChanges)> = Vec::new(); - - let mut type_converter = TypeConverter::default(); - - let mut blanket_impl_attrs = Vec::new(); - let mut dyn_trait_attrs = Vec::new(); - // just to provide a better error message for bound in trait_bounds(&original_trait.supertraits) { if let Some(assoc_type) = iter_path(&bound.path) @@ -117,6 +108,11 @@ pub fn dynamize(_attr: TokenStream, input: TokenStream) -> TokenStream { } } + let mut type_converter = TypeConverter::default(); + + let mut blanket_impl_attrs = Vec::new(); + let mut dyn_trait_attrs = Vec::new(); + // FUTURE: use Vec::drain_filter once it's stable let mut i = 0; while i < original_trait.attrs.len() { @@ -186,6 +182,8 @@ pub fn dynamize(_attr: TokenStream, input: TokenStream) -> TokenStream { } } + let mut objectifiable_methods: Vec<(Signature, SignatureChanges)> = Vec::new(); + for item in &original_trait.items { if let TraitItem::Method(method) = item { let mut signature = method.sig.clone(); @@ -280,6 +278,8 @@ pub fn dynamize(_attr: TokenStream, input: TokenStream) -> TokenStream { } } + let original_trait_name = original_trait.ident.clone(); + for (signature, parsed_method) in objectifiable_methods { let mut new_method = TraitItemMethod { attrs: Vec::new(), -- cgit v1.2.3