From de370df01a171b4fd910dfa9a067830acd1f9a3c Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Tue, 14 Jul 2026 02:17:33 +0800 Subject: refactor(mingling_picker): move parse result out of requirement and into pattern BREAKING CHANGE: `PickerRequirement` no longer stores a `PickerResult`. Parsed results are now held in the `PickerPattern` structs. The `result`, `result_mut`, `set_result`, `reset_result`, and `with_result` methods on `PickerRequirement` have been removed. The `Picker::pick` method is introduced to begin a pattern definition. --- mingling_picker/src/picker/patterns.rs | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'mingling_picker/src/picker') diff --git a/mingling_picker/src/picker/patterns.rs b/mingling_picker/src/picker/patterns.rs index 74a8cd8..80632d5 100644 --- a/mingling_picker/src/picker/patterns.rs +++ b/mingling_picker/src/picker/patterns.rs @@ -1,12 +1,26 @@ -use crate::{Pickable, PickerArguments, PickerRequirement}; +use crate::{Pickable, Picker, PickerArguments, PickerRequirement, PickerResult}; mingling_picker_macros::internal_repeat! (1..=32 => { - pub struct PickerPattern$<'a, (Type$,)+> - where (Type$: Pickable + Default,)+ + pub struct PickerPattern$<'a, (T$,)+> + where (T$: Pickable + Default,)+ { pub args: PickerArguments<'a>, ( - pub require_$: PickerRequirement<'a, Type$>, + pub require_$: &'a PickerRequirement<'a, T$>, + pub result_$: PickerResult, )+ } }); + +impl<'a> Picker<'a> { + pub fn pick(self, req: &'a PickerRequirement<'a, N>) -> PickerPattern1<'a, N> + where + N: Pickable + Default, + { + PickerPattern1 { + args: self.args, + require_1: req, + result_1: PickerResult::Unparsed, + } + } +} -- cgit