From 16f76653e45cc1775a9e558f69da535cd1bcd4e3 Mon Sep 17 00:00:00 2001 From: davidemazzocchi Date: Fri, 10 Oct 2025 11:58:56 +0200 Subject: [PATCH] feat: add support for i32 and u32 primitive types --- 01.workspace/heave/src/imp/i32_from_value.rs | 13 +++++++++++++ 01.workspace/heave/src/imp/mod.rs | 4 ++++ 01.workspace/heave/src/imp/u32_from_value.rs | 13 +++++++++++++ 01.workspace/heave/src/imp/value_from_i32.rs | 7 +++++++ 01.workspace/heave/src/imp/value_from_u32.rs | 7 +++++++ 5 files changed, 44 insertions(+) create mode 100644 01.workspace/heave/src/imp/i32_from_value.rs create mode 100644 01.workspace/heave/src/imp/u32_from_value.rs create mode 100644 01.workspace/heave/src/imp/value_from_i32.rs create mode 100644 01.workspace/heave/src/imp/value_from_u32.rs diff --git a/01.workspace/heave/src/imp/i32_from_value.rs b/01.workspace/heave/src/imp/i32_from_value.rs new file mode 100644 index 0000000..836c1fb --- /dev/null +++ b/01.workspace/heave/src/imp/i32_from_value.rs @@ -0,0 +1,13 @@ +use crate::*; + +impl From for i32 { + fn from(value: Value) -> i32 { + match value { + Value::SignedInt(value) => value + .try_into() + .map_err(|_| "Type mismatch".to_string()) + .unwrap(), + _ => panic!("Type mismatch"), + } + } +} diff --git a/01.workspace/heave/src/imp/mod.rs b/01.workspace/heave/src/imp/mod.rs index 25558a2..9882c41 100644 --- a/01.workspace/heave/src/imp/mod.rs +++ b/01.workspace/heave/src/imp/mod.rs @@ -1,11 +1,15 @@ pub mod bool_from_value; pub mod f64_from_value; +pub mod i32_from_value; pub mod i64_from_value; pub mod string_from_value; +pub mod u32_from_value; pub mod u64_from_value; pub mod value_from_bool; pub mod value_from_f64; +pub mod value_from_i32; pub mod value_from_i64; pub mod value_from_str; pub mod value_from_string; +pub mod value_from_u32; pub mod value_from_u64; diff --git a/01.workspace/heave/src/imp/u32_from_value.rs b/01.workspace/heave/src/imp/u32_from_value.rs new file mode 100644 index 0000000..6cb44df --- /dev/null +++ b/01.workspace/heave/src/imp/u32_from_value.rs @@ -0,0 +1,13 @@ +use crate::*; + +impl From for u32 { + fn from(value: Value) -> u32 { + match value { + Value::UnsignedInt(value) => value + .try_into() + .map_err(|_| "Type mismatch".to_string()) + .unwrap(), + _ => panic!("Type mismatch"), + } + } +} diff --git a/01.workspace/heave/src/imp/value_from_i32.rs b/01.workspace/heave/src/imp/value_from_i32.rs new file mode 100644 index 0000000..d800e64 --- /dev/null +++ b/01.workspace/heave/src/imp/value_from_i32.rs @@ -0,0 +1,7 @@ +use crate::*; + +impl From for Value { + fn from(value: i32) -> Self { + Self::SignedInt(value.into()) + } +} diff --git a/01.workspace/heave/src/imp/value_from_u32.rs b/01.workspace/heave/src/imp/value_from_u32.rs new file mode 100644 index 0000000..f2d6620 --- /dev/null +++ b/01.workspace/heave/src/imp/value_from_u32.rs @@ -0,0 +1,7 @@ +use crate::*; + +impl From for Value { + fn from(value: u32) -> Self { + Self::UnsignedInt(value.into()) + } +}