review: replace i32 with Vec<i32> as roll return type for future exploding dice

This commit is contained in:
2025-11-16 10:28:53 +01:00
parent 98249789ee
commit f5e5ee2c91
2 changed files with 7 additions and 7 deletions

View File

@@ -1,18 +1,18 @@
use crate::*;
use std::ops::*;
fn roll_sides(sides: u16) -> i32 {
fn roll_sides(sides: u16) -> Vec<i32> {
let mut rng = rand::rng();
rng.random_range(1..=sides) as i32
vec![rng.random_range(1..=sides as i32)]
}
fn roll_range(range: RangeInclusive<i32>) -> i32 {
fn roll_range(range: RangeInclusive<i32>) -> Vec<i32> {
let mut rng = rand::rng();
rng.random_range(range)
vec![rng.random_range(range)]
}
impl Die {
pub fn roll(&self) -> i32 {
pub fn roll(&self) -> Vec<i32> {
match self {
Die::Sides(sides) => roll_sides(*sides),
Die::Range(range) => roll_range(range.clone()),
@@ -27,7 +27,7 @@ mod tests {
fn check_roll_range() {
let die = Die::Range(5..=5);
for _ in 1..=1000 {
assert_eq!(die.roll(), 5);
assert_eq!(die.roll(), [5]);
}
}
}

View File

@@ -4,7 +4,7 @@ impl Handful {
pub fn roll(self) -> Outcome {
let mut die_rolls = Vec::<i32>::new();
for die in self.dice {
die_rolls.push(die.roll());
die_rolls.append(&mut die.roll());
}
Outcome::List(die_rolls)
}