From 8a796ecbe4d8edb9c8e67b9fc44028d3778113ab Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Fri, 26 Jun 2026 07:19:44 +0800 Subject: feat(macros): simplify ResultEmpty to a unit struct --- mingling_macros/src/chain.rs | 6 +++--- mingling_macros/src/lib.rs | 18 +++++++++++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) (limited to 'mingling_macros/src') diff --git a/mingling_macros/src/chain.rs b/mingling_macros/src/chain.rs index 2abf3c1..6191d39 100644 --- a/mingling_macros/src/chain.rs +++ b/mingling_macros/src/chain.rs @@ -83,7 +83,7 @@ fn generate_proc_fn( stmts.push(syn::Stmt::Expr( syn::parse_quote! { > - ::to_chain(crate::ResultEmpty::new(())) + ::to_chain(crate::ResultEmpty) }, None, )); @@ -111,7 +111,7 @@ fn generate_proc_fn( quote! { #call > - ::to_chain(crate::ResultEmpty::new(())) + ::to_chain(crate::ResultEmpty) } } } else if has_resources { @@ -169,7 +169,7 @@ fn generate_original_fn( quote! { { #fn_body - >::to_chain(crate::ResultEmpty::new(())) + >::to_chain(crate::ResultEmpty) } } } else { diff --git a/mingling_macros/src/lib.rs b/mingling_macros/src/lib.rs index ad3b6a9..c239a55 100644 --- a/mingling_macros/src/lib.rs +++ b/mingling_macros/src/lib.rs @@ -590,7 +590,7 @@ pub fn route(input: TokenStream) -> TokenStream { #[proc_macro] pub fn empty_result(_input: TokenStream) -> TokenStream { let expanded = quote! { - >::to_chain(crate::ResultEmpty::new(())) + >::to_chain(crate::ResultEmpty) }; TokenStream::from(expanded) } @@ -1688,10 +1688,22 @@ pub fn register_renderer(input: TokenStream) -> TokenStream { /// ``` #[proc_macro] pub fn program_fallback_gen(_input: TokenStream) -> TokenStream { + #[cfg(feature = "structural_renderer")] + let pack_empty = quote! { + #[derive(::serde::Serialize, ::mingling::StructuralData, ::mingling::Groupped, Default)] + pub struct ResultEmpty; + }; + + #[cfg(not(feature = "structural_renderer"))] + let pack_empty = quote! { + #[derive(::mingling::Groupped, Default)] + pub struct ResultEmpty; + }; + let expanded = quote! { ::mingling::macros::pack!(ErrorRendererNotFound = String); ::mingling::macros::pack!(ErrorDispatcherNotFound = Vec); - ::mingling::macros::pack!(ResultEmpty = ()); + #pack_empty }; TokenStream::from(expanded) } @@ -2025,7 +2037,7 @@ pub fn program_final_gen(_input: TokenStream) -> TokenStream { ::mingling::AnyOutput::new(ErrorDispatcherNotFound::new(args)) } fn build_empty_result() -> ::mingling::AnyOutput { - ::mingling::AnyOutput::new(ResultEmpty::new(())) + ::mingling::AnyOutput::new(ResultEmpty) } #render_fn #do_chain_fn -- cgit