From 3de10ca22cca06c4d9069984d0e66e370a331dde Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Wed, 1 Apr 2026 15:48:41 +0800 Subject: Replace typeid-based dispatch with enum-based dispatch - Add `Groupped` trait and `member_id` to `AnyOutput` - Add generic parameter `G` to `Dispatcher`, `Chain`, `Program` etc - Remove `hint` module and its marker types - Update macros to support explicit group specification - Add `gen_program` macro for generating enum-based programs - Add `GroupProcess` marker type for type-level grouping --- mingling_core/src/program/setup.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'mingling_core/src/program/setup.rs') diff --git a/mingling_core/src/program/setup.rs b/mingling_core/src/program/setup.rs index e81247e..1f16f80 100644 --- a/mingling_core/src/program/setup.rs +++ b/mingling_core/src/program/setup.rs @@ -1,18 +1,25 @@ +use std::fmt::Display; + use crate::{ProgramCollect, program::Program}; mod basic; pub use basic::*; -pub trait ProgramSetup { - fn setup(&mut self, program: &mut Program); +pub trait ProgramSetup +where + C: ProgramCollect, + G: Display, +{ + fn setup(&mut self, program: &mut Program); } -impl Program +impl Program where C: ProgramCollect, + G: Display, { /// Load and execute init logic - pub fn with_setup + 'static>(&mut self, mut setup: S) -> S { + pub fn with_setup + 'static>(&mut self, mut setup: S) -> S { S::setup(&mut setup, self); setup } -- cgit