review: replace i32 with Vec<i32> as roll return type for future exploding dice
This commit is contained in:
@@ -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]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user