1
0

30 lines
811 B
Rust
Raw Normal View History

use std::ops::Range;
use rand::Rng;
2025-02-05 19:27:51 -05:00
use crate::vm::Thread;
pub fn random_int(data: &mut Thread, destination: usize, argument_range: Range<usize>) {
let mut argument_range_iter = argument_range.into_iter();
let (min, max) = {
let mut min = None;
loop {
let register_index = argument_range_iter
.next()
.unwrap_or_else(|| panic!("No argument was passed to \"random_int\""));
let integer = data.get_integer_register(register_index);
if min.is_none() {
min = Some(integer);
} else {
break (min, integer);
}
}
};
let random_integer = rand::thread_rng().gen_range(min.unwrap()..max);
data.set_integer_register(destination, random_integer);
}