diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-06-26 07:19:44 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-06-26 07:19:44 +0800 |
| commit | 8a796ecbe4d8edb9c8e67b9fc44028d3778113ab (patch) | |
| tree | 7ecdcc690ec7dae783a8ca47b95983210f005a72 /mingling_macros | |
| parent | d1a74ce57e5be72436376a829e9c7e1e7c1c561b (diff) | |
feat(macros): simplify ResultEmpty to a unit struct
Diffstat (limited to 'mingling_macros')
| -rw-r--r-- | mingling_macros/src/chain.rs | 6 | ||||
| -rw-r--r-- | mingling_macros/src/lib.rs | 18 |
2 files changed, 18 insertions, 6 deletions
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! { <crate::ResultEmpty as ::mingling::Groupped::<crate::ThisProgram>> - ::to_chain(crate::ResultEmpty::new(())) + ::to_chain(crate::ResultEmpty) }, None, )); @@ -111,7 +111,7 @@ fn generate_proc_fn( quote! { #call <crate::ResultEmpty as ::mingling::Groupped::<crate::ThisProgram>> - ::to_chain(crate::ResultEmpty::new(())) + ::to_chain(crate::ResultEmpty) } } } else if has_resources { @@ -169,7 +169,7 @@ fn generate_original_fn( quote! { { #fn_body - <crate::ResultEmpty as ::mingling::Groupped::<crate::ThisProgram>>::to_chain(crate::ResultEmpty::new(())) + <crate::ResultEmpty as ::mingling::Groupped::<crate::ThisProgram>>::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! { - <crate::ResultEmpty as ::mingling::Groupped::<crate::ThisProgram>>::to_chain(crate::ResultEmpty::new(())) + <crate::ResultEmpty as ::mingling::Groupped::<crate::ThisProgram>>::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<String>); - ::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<Self::Enum> { - ::mingling::AnyOutput::new(ResultEmpty::new(())) + ::mingling::AnyOutput::new(ResultEmpty) } #render_fn #do_chain_fn |
