From 57c53affe3542cb6bd4e79ee4c18f20a1bd76b2d Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Mon, 17 Aug 2026 05:49:19 +0800 Subject: refactor!: replace pack! macros with derive-based pipeline types Remove the `pack!`, `pack_err!`, `pack_structural!`, and `pack_err_structural!` macros, replacing all pipeline type definitions with `#[derive(Grouped)]` and `#[derive(Grouped, Wrap)]` attributes. This changes the generated struct shape from named-field structs with an `inner` field to tuple structs accessed via `.0`, and removes the auto-generated `name` and `info` fields from error types. --- mingling_macros/src/func/dispatcher.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'mingling_macros/src/func/dispatcher.rs') diff --git a/mingling_macros/src/func/dispatcher.rs b/mingling_macros/src/func/dispatcher.rs index c4d67a9..41dd2d0 100644 --- a/mingling_macros/src/func/dispatcher.rs +++ b/mingling_macros/src/func/dispatcher.rs @@ -115,7 +115,9 @@ pub(crate) fn dispatcher(input: TokenStream) -> TokenStream { let program_type = crate::default_program_path(); let expanded = quote! { - ::mingling::macros::pack!(#(#entry_attrs)* #pack = Vec); + #[derive(::mingling::Grouped, ::mingling::Wrap, Default)] + #(#entry_attrs)* + pub struct #pack(pub ::std::vec::Vec<::std::string::String>); #(#cmd_attrs)* #[doc(hidden)] @@ -127,7 +129,7 @@ pub(crate) fn dispatcher(input: TokenStream) -> TokenStream { impl From<#pack> for crate::Entry { fn from(value: #pack) -> Self { - crate::Entry::new(value.inner) + crate::Entry(value.0) } } @@ -136,7 +138,7 @@ pub(crate) fn dispatcher(input: TokenStream) -> TokenStream { impl ::mingling::Dispatcher<#program_type> for #hidden_dispatcher { fn begin(&self, args: Vec) -> ::mingling::ChainProcess<#program_type> { use ::mingling::Grouped; - ::mingling::Routable::to_chain(#pack::new(args)) + ::mingling::Routable::to_chain(#pack(args)) } } }; @@ -149,7 +151,7 @@ fn get_comp_entry(entry_name: &Ident) -> TokenStream2 { let comp_entry = quote! { impl ::mingling::CompletionEntry for #entry_name { fn get_input(self) -> Vec { - self.inner.clone() + self.0.clone() } } }; -- cgit