diff options
Diffstat (limited to 'src/eval/cast.rs')
| -rw-r--r-- | src/eval/cast.rs | 15 |
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() |
