From 256e638d25315f114940b34ad90969b7f7b70823 Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Tue, 28 Jul 2026 21:03:53 +0800 Subject: feat(dispatcher, gen_program): add From impl and default Entry pack type Add a `From for crate::Entry` implementation in `dispatcher!()` macro and a default `Entry` pack type in `gen_program!()` for ergonomic program entry handling --- mingling_macros/src/func/dispatcher.rs | 6 ++++++ mingling_macros/src/func/gen_program.rs | 2 ++ 2 files changed, 8 insertions(+) (limited to 'mingling_macros/src') diff --git a/mingling_macros/src/func/dispatcher.rs b/mingling_macros/src/func/dispatcher.rs index 45ac4c8..ef02618 100644 --- a/mingling_macros/src/func/dispatcher.rs +++ b/mingling_macros/src/func/dispatcher.rs @@ -121,6 +121,12 @@ pub(crate) fn dispatcher(input: TokenStream) -> TokenStream { ::mingling::macros::pack!(#(#entry_attrs)* #pack = Vec); + impl From<#pack> for crate::Entry { + fn from(value: #pack) -> Self { + crate::Entry::new(value.inner) + } + } + #comp_entry #dispatch_tree_entry diff --git a/mingling_macros/src/func/gen_program.rs b/mingling_macros/src/func/gen_program.rs index 0c35318..d50041e 100644 --- a/mingling_macros/src/func/gen_program.rs +++ b/mingling_macros/src/func/gen_program.rs @@ -56,6 +56,8 @@ pub(crate) fn gen_program_impl(_input: TokenStream) -> TokenStream { /// Alias for the current program type `ThisProgram` pub type Next = ::mingling::ChainProcess; + ::mingling::macros::pack!(Entry = Vec); + impl ::mingling::Routable for ::mingling::ChainProcess { fn to_chain(self) -> ::mingling::ChainProcess { -- cgit