diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-07-15 16:08:16 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-07-15 16:14:15 +0800 |
| commit | a7a116110a80dee887ee2d9a2660fbff5e0cbc62 (patch) | |
| tree | 120f5f497d6ba169a57af8ea77fd8df7e8432b9d /mingling_picker/src/picker/patterns.rs | |
| parent | c3e990a5c47dc8894899d774a0d89f089adec308 (diff) | |
feat(picker): add Route generic parameter for error routing
Diffstat (limited to 'mingling_picker/src/picker/patterns.rs')
| -rw-r--r-- | mingling_picker/src/picker/patterns.rs | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/mingling_picker/src/picker/patterns.rs b/mingling_picker/src/picker/patterns.rs index b828849..d8a2797 100644 --- a/mingling_picker/src/picker/patterns.rs +++ b/mingling_picker/src/picker/patterns.rs @@ -4,10 +4,11 @@ use crate::{Pickable, Picker, PickerArgResult, PickerArgs, PickerFlag}; internal_repeat!(1..=32 => { #[doc(hidden)] - pub struct PickerPattern$<'a, (T$,+)> + pub struct PickerPattern$<'a, (T$,+), Route> where (T$: Pickable<'a>,+) { pub args: PickerArgs<'a>, + pub error_route: Option<Route>, ( pub flag_$: &'a PickerFlag<'a, T$>, pub result_$: PickerArgResult<T$>, @@ -18,7 +19,7 @@ internal_repeat!(1..=32 => { }); internal_repeat!(1..=32 => { - impl<'a, (T$,+)> PickerPattern$<'a, (T$,+)> + impl<'a, (T$,+), Route> PickerPattern$<'a, (T$,+), Route> where (T$: Pickable<'a>,+) { /// Sets a default value provider for this flag. @@ -90,7 +91,7 @@ internal_repeat!(1..=32 => { }); internal_repeat!(1..32 => { - impl<'a, (T$,+)> PickerPattern$<'a, (T$,+)> + impl<'a, (T$,+), Route> PickerPattern$<'a, (T$,+), Route> where (T$: Pickable<'a>,+) { #[allow(clippy::type_complexity)] @@ -99,13 +100,14 @@ internal_repeat!(1..32 => { /// This method extends the current picking pattern by appending an additional flag. /// The previous flags and their results are preserved as part of the new pattern. /// The new flag's result is initially `Unparsed`. - pub fn pick<N>(self, flag: &'a PickerFlag<'a, N>) -> PickerPattern$+<'a, (T$,+), N> + pub fn pick<N>(self, flag: &'a PickerFlag<'a, N>) -> PickerPattern$+<'a, (T$,+), N, Route> where N: Pickable<'a>, { PickerPattern$+ { // Args args: self.args, + error_route: self.error_route, // Current flag_$+: flag, @@ -125,17 +127,18 @@ internal_repeat!(1..32 => { } }); -impl<'a> Picker<'a> { +impl<'a, Route> Picker<'a, Route> { /// Creates a `PickerPattern1` from the given flag to start a picking chain. /// /// This method initiates a parameter picking chain with one flag. /// The result is initially `Unparsed`. - pub fn pick<N>(self, flag: &'a PickerFlag<'a, N>) -> PickerPattern1<'a, N> + pub fn pick<N>(self, flag: &'a PickerFlag<'a, N>) -> PickerPattern1<'a, N, Route> where N: Pickable<'a>, { PickerPattern1 { args: self.args, + error_route: None::<Route>, flag_1: flag, result_1: PickerArgResult::Unparsed, default_1: None, |
