aboutsummaryrefslogtreecommitdiff
path: root/mingling_macros/src/lib.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-06-26 07:19:44 +0800
committer魏曹先生 <1992414357@qq.com>2026-06-26 07:19:44 +0800
commit8a796ecbe4d8edb9c8e67b9fc44028d3778113ab (patch)
tree7ecdcc690ec7dae783a8ca47b95983210f005a72 /mingling_macros/src/lib.rs
parentd1a74ce57e5be72436376a829e9c7e1e7c1c561b (diff)
feat(macros): simplify ResultEmpty to a unit struct
Diffstat (limited to 'mingling_macros/src/lib.rs')
-rw-r--r--mingling_macros/src/lib.rs18
1 files changed, 15 insertions, 3 deletions
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