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. --- README.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 91aa166..20947f2 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,8 @@ Mingling abstracts the behavior of a program's lifecycle into three phases: **Di ```rust dispatcher!("current", EntryCurrent); -pack!(StateNext = ()); +#[derive(Grouped, Wrap, Default)] +pub struct StateNext(()); #[chain] fn handle_current(_: EntryCurrent) -> StateNext { @@ -66,22 +67,26 @@ use mingling::macros::buffer; use mingling::prelude::*; dispatcher!("calc", EntryCalculate); -pack!(StateSumNumbers = Vec); -pack!(ResultNumber = i32); + +#[derive(Grouped, Wrap)] +pub struct StateSumNumbers(Vec); + +#[derive(Grouped, Wrap)] +pub struct ResultNumber(i32); // Entry: parse arguments and pass state to the calculation step #[chain] fn handle_calc(args: EntryCalculate) -> StateSumNumbers { let numbers = args.pick(&arg![Vec]).unwrap(); - StateSumNumbers::new(numbers) + StateSumNumbers(numbers) } // Calculate: pass the result to the rendering step #[chain] fn handle_state_sum_numbers(sum: StateSumNumbers) -> ResultNumber { - let numbers = sum.inner; + let numbers = sum.0; let total: i32 = numbers.iter().sum(); - ResultNumber::new(total) + ResultNumber(total) } // Renderer: return the render result and let the framework handle output -- cgit