diff --git a/src/types.rs b/src/types.rs index e9a4cdb..89bdc43 100644 --- a/src/types.rs +++ b/src/types.rs @@ -109,6 +109,42 @@ impl From for String { } } +impl From for i32 { + fn from(value: Value) -> Self { + match value { + Value::Number(num) => num as i32, + _ => 0, + } + } +} + +impl From for i64 { + fn from(value: Value) -> Self { + match value { + Value::Number(num) => num, + _ => 0, + } + } +} + +impl From<&Value> for i32 { + fn from(value: &Value) -> Self { + match value { + Value::Number(num) => *num as i32, + _ => 0, + } + } +} + +impl From<&Value> for i64 { + fn from(value: &Value) -> Self { + match value { + Value::Number(num) => *num, + _ => 0, + } + } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] pub struct Symbol(pub String);