From eebcdf6b163174ec1629d121264c0477652e3323 Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Mon, 10 Aug 2026 16:04:57 +0800 Subject: refactor(macros): clean up clippy lints and simplify code --- mingling_macros/src/attr/renderer.rs | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'mingling_macros/src/attr/renderer.rs') diff --git a/mingling_macros/src/attr/renderer.rs b/mingling_macros/src/attr/renderer.rs index 828dc00..038edd8 100644 --- a/mingling_macros/src/attr/renderer.rs +++ b/mingling_macros/src/attr/renderer.rs @@ -15,9 +15,7 @@ fn extract_user_return_type(sig: &Signature) -> Option } #[allow(clippy::too_many_lines)] -pub(crate) fn renderer_attr(attr: TokenStream, item: TokenStream) -> TokenStream { - // #[renderer] takes no arguments; always use the default program path - let _ = attr; +pub(crate) fn renderer_attr(item: TokenStream) -> TokenStream { let program_path = crate::default_program_path(); let program_type = &program_path; @@ -121,7 +119,7 @@ pub(crate) fn renderer_attr(attr: TokenStream, item: TokenStream) -> TokenStream // The original function preserves the user's exact signature and body. // Resource parameters are passed directly by the caller, NOT injected from context. let original_inputs = input_fn.sig.inputs.clone(); - let original_return_type = user_return_type.clone().unwrap_or(quote! { () }); + let original_return_type = user_return_type.unwrap_or_else(|| quote! { () }); let expanded = quote! { #(#fn_attrs)* @@ -249,14 +247,15 @@ pub(crate) fn register_renderer(input: TokenStream) -> TokenStream { } } // renderers lock released here - let mut renderers = get_global_set(&crate::RENDERERS).lock().unwrap(); - let mut renderer_exist = get_global_set(&crate::RENDERERS_EXIST).lock().unwrap(); - - #[cfg(feature = "structural_renderer")] - let mut structural_renderers = get_global_set(&crate::STRUCTURAL_RENDERERS).lock().unwrap(); - - renderers.insert(renderer_entry_str); - renderer_exist.insert(renderer_exist_entry_str); + // Insert renderer registration directly without holding a lock variable + get_global_set(&crate::RENDERERS) + .lock() + .unwrap() + .insert(renderer_entry_str); + get_global_set(&crate::RENDERERS_EXIST) + .lock() + .unwrap() + .insert(renderer_exist_entry_str); // Only register structural renderer if the type is in STRUCTURED_TYPES #[cfg(feature = "structural_renderer")] @@ -266,7 +265,10 @@ pub(crate) fn register_renderer(input: TokenStream) -> TokenStream { .unwrap() .contains(&variant_name); if is_structured { - structural_renderers.insert(structural_renderer_entry_str); + get_global_set(&crate::STRUCTURAL_RENDERERS) + .lock() + .unwrap() + .insert(structural_renderer_entry_str); } } -- cgit