diff --git a/ambassador/src/delegate_shared.rs b/ambassador/src/delegate_shared.rs index 97ba419..056f754 100644 --- a/ambassador/src/delegate_shared.rs +++ b/ambassador/src/delegate_shared.rs @@ -100,9 +100,7 @@ pub(super) fn delegate_macro( ).unwrap_or_else(|x| x.to_compile_error()); } - let iter = delegate_attributes - .into_iter() - .map(|attr| delegate_single(input, attr)); + let iter = delegate_attributes.map(|attr| delegate_single(input, attr)); let res = process_results(iter, |iter| iter.flatten().collect()); res.unwrap_or_else(|x| x.to_compile_error()) } diff --git a/ambassador/src/register.rs b/ambassador/src/register.rs index b8dd281..37694ac 100644 --- a/ambassador/src/register.rs +++ b/ambassador/src/register.rs @@ -210,6 +210,19 @@ fn replace_gen_idents(tokens: TokenStream, gen_idents: &[&Ident]) -> TokenStream } res } +fn build_method( + method_sig: &TokenStream, + method_invocation: TokenStream, + extr_attrs: TokenStream, +) -> TokenStream { + quote! { + #[inline] + #extr_attrs + #method_sig { + #method_invocation + } + } +} fn build_trait_items( original_item: &TraitItem, @@ -264,31 +277,25 @@ fn build_trait_items( } }; let method_invocation = build_method_invocation(original_method, &field_ident); - quote! { - #method_sig { - #method_invocation - } - } + build_method(&method_sig, method_invocation, quote!()) }, { let method_invocation = build_method_invocation(original_method, "e!(inner)); - quote! { - #method_sig { - match self { - $($variants(inner) => #method_invocation),* - } + let method_invocation = quote! { + match self { + $($variants(inner) => #method_invocation),* } - } + }; + build_method(&method_sig, method_invocation, quote!()) }, { let method_invocation = build_method_invocation(original_method, "e!(self)); - quote! { - #[deny(unconditional_recursion)] - #method_sig { - #method_invocation - } - } + build_method( + &method_sig, + method_invocation, + quote!(#[deny(unconditional_recursion)]), + ) }, ) }