summaryrefslogtreecommitdiff
path: root/src/eval/cast.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/eval/cast.rs')
-rw-r--r--src/eval/cast.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/eval/cast.rs b/src/eval/cast.rs
index 7b306633..e2ae115f 100644
--- a/src/eval/cast.rs
+++ b/src/eval/cast.rs
@@ -115,6 +115,21 @@ cast_to_value! {
}
cast_from_value! {
+ u64,
+ int: i64 => int.try_into().map_err(|_| {
+ if int < 0 {
+ "number must be at least zero"
+ } else {
+ "number too large"
+ }
+ })?,
+}
+
+cast_to_value! {
+ v: u64 => Value::Int(v as i64)
+}
+
+cast_from_value! {
NonZeroUsize,
int: i64 => int
.try_into()