diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-07-17 00:02:52 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-07-17 00:02:52 +0800 |
| commit | 2217cd356fe6ee5571c661a9aef3696547473c65 (patch) | |
| tree | 8a5e8893ec645733bc17e362cf2a1ed1e673320a | |
| parent | b22041f6da39c4d674ad6bcd15ddd765144f85ef (diff) | |
feat(builtin): add SinglePickable impl for numeric types
| -rw-r--r-- | mingling_picker/src/builtin.rs | 1 | ||||
| -rw-r--r-- | mingling_picker/src/builtin/pick_numbers.rs | 20 |
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, +} |
