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/lib.rs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'mingling_macros/src/lib.rs') 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