aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-07-17 00:02:52 +0800
committer魏曹先生 <1992414357@qq.com>2026-07-17 00:02:52 +0800
commit2217cd356fe6ee5571c661a9aef3696547473c65 (patch)
tree8a5e8893ec645733bc17e362cf2a1ed1e673320a
parentb22041f6da39c4d674ad6bcd15ddd765144f85ef (diff)
feat(builtin): add SinglePickable impl for numeric types
-rw-r--r--mingling_picker/src/builtin.rs1
-rw-r--r--mingling_picker/src/builtin/pick_numbers.rs20
2 files changed, 21 insertions, 0 deletions
diff --git a/mingling_picker/src/builtin.rs b/mingling_picker/src/builtin.rs
index d179f86..e855b08 100644
--- a/mingling_picker/src/builtin.rs
+++ b/mingling_picker/src/builtin.rs
@@ -1,3 +1,4 @@
mod pick_bool;
mod pick_flag;
+mod pick_numbers;
mod pick_string;
diff --git a/mingling_picker/src/builtin/pick_numbers.rs b/mingling_picker/src/builtin/pick_numbers.rs
new file mode 100644
index 0000000..6c0f0b7
--- /dev/null
+++ b/mingling_picker/src/builtin/pick_numbers.rs
@@ -0,0 +1,20 @@
+use crate::{SinglePickable, pickable_needed::*};
+
+macro_rules! impl_single_pickable_num {
+ ($($t:ty),+ $(,)?) => {
+ $(impl SinglePickable for $t {
+ fn pick_single(str: Option<&str>) -> PickerArgResult<Self> {
+ match str {
+ Some(s) => s.parse::<$t>().map(PickerArgResult::Parsed).unwrap_or(PickerArgResult::NotFound),
+ None => PickerArgResult::NotFound,
+ }
+ }
+ })+
+ };
+}
+
+impl_single_pickable_num! {
+ i8, i16, i32, i64, i128, isize,
+ u8, u16, u32, u64, u128, usize,
+ f32, f64,
+}