aboutsummaryrefslogtreecommitdiff
path: root/mingling_picker/src/picker
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-07-14 01:36:27 +0800
committer魏曹先生 <1992414357@qq.com>2026-07-14 01:36:27 +0800
commit4665fc94ab9508d115298dd988e2381354f46c01 (patch)
treea2b14f5684c68d88a0a77570d0ac3ac8d863867b /mingling_picker/src/picker
parent5ac0f0e98d05e95f7e3c58995f8d79670cbac772 (diff)
feat(picker): add core trait, types, and builder macro for argument
parsing Implement the foundational `mingling_picker` library along with its companion `mingling_picker_macros` crate. The picker provides: - `Pickable` trait for parsing types from raw strings - `PickerResult` enum modeling parse outcomes - `Picker` struct for storing and indexing command-line arguments - `PickerRequirement` struct for declarative parameter definitions - `PickerPattern` family (1..32) of typed pattern structs via the `internal_repeat` proc macro - `req!` proc macro as a succinct builder for `PickerRequirement` Re-export `mingling_picker::macros::*` from the `mingling` crate when the `picker` feature is enabled, replacing the previous wildcard re-export of `mingling_macros`.
Diffstat (limited to 'mingling_picker/src/picker')
-rw-r--r--mingling_picker/src/picker/patterns.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/mingling_picker/src/picker/patterns.rs b/mingling_picker/src/picker/patterns.rs
new file mode 100644
index 0000000..74a8cd8
--- /dev/null
+++ b/mingling_picker/src/picker/patterns.rs
@@ -0,0 +1,12 @@
+use crate::{Pickable, PickerArguments, PickerRequirement};
+
+mingling_picker_macros::internal_repeat! (1..=32 => {
+ pub struct PickerPattern$<'a, (Type$,)+>
+ where (Type$: Pickable + Default,)+
+ {
+ pub args: PickerArguments<'a>,
+ (
+ pub require_$: PickerRequirement<'a, Type$>,
+ )+
+ }
+});