aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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,
+}