use fix_error::Error; use crate::value::StrictValue; use crate::{NixNum, VmError}; pub(super) fn vm_err(msg: impl Into) -> VmError { VmError::Uncatchable(Error::eval_error(msg.into())) } pub(super) fn get_num(val: StrictValue<'_>) -> Option { if let Some(i) = val.as_inline::() { Some(NixNum::Int(i as i64)) } else if let Some(gc_i) = val.as_gc::() { Some(NixNum::Int(*gc_i)) } else { val.as_float().map(NixNum::Float) } }