From ad10b82c1e6785cbf88562117b1609905cfeb6dc Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Mon, 27 Apr 2026 21:06:38 +0800 Subject: Add `route!` macro for early error routing --- CHANGELOG.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'CHANGELOG.md') diff --git a/CHANGELOG.md b/CHANGELOG.md index f7a2ec2..582cbdb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,42 @@ fn your_command_help(_prev: YourEntry) { } ``` +7. **\[macros\]** Added the `route!` macro, which allows quick error routing within the `chain!` function. Usage is as follows: + +```rust +// Before +#[chain] +fn parse(prev: PickEntry) -> mingling::ChainProcess { + let picker = Picker::new(prev.inner); + let pick_result = picker + .pick_or_route((), NoNameProvided::default().to_render()) + .unpack(); + + match pick_result { + Ok(name) => { + // use name here + } + Err(e) => { + // handle error route here + e + } + } +} + +// After +#[chain] +fn parse(prev: PickEntry) -> mingling::ChainProcess { + let picker = Picker::new(prev.inner); + let name: String = route! { + picker + .pick_or_route((), NoNameProvided::default().to_render()) + .unpack() + }; + + // use name here +} +``` + #### **BREAKING CHANGES**: 1. **\[macros\]** Removed macro `dispatcher_render!` from `mingling_macros` -- cgit