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 crate::*;
|
||||||
use std::ops::*;
|
use std::ops::*;
|
||||||
|
|
||||||
fn roll_sides(sides: u16) -> i32 {
|
fn roll_sides(sides: u16) -> Vec<i32> {
|
||||||
let mut rng = rand::rng();
|
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();
|
let mut rng = rand::rng();
|
||||||
rng.random_range(range)
|
vec![rng.random_range(range)]
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Die {
|
impl Die {
|
||||||
pub fn roll(&self) -> i32 {
|
pub fn roll(&self) -> Vec<i32> {
|
||||||
match self {
|
match self {
|
||||||
Die::Sides(sides) => roll_sides(*sides),
|
Die::Sides(sides) => roll_sides(*sides),
|
||||||
Die::Range(range) => roll_range(range.clone()),
|
Die::Range(range) => roll_range(range.clone()),
|
||||||
@@ -27,7 +27,7 @@ mod tests {
|
|||||||
fn check_roll_range() {
|
fn check_roll_range() {
|
||||||
let die = Die::Range(5..=5);
|
let die = Die::Range(5..=5);
|
||||||
for _ in 1..=1000 {
|
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 {
|
pub fn roll(self) -> Outcome {
|
||||||
let mut die_rolls = Vec::<i32>::new();
|
let mut die_rolls = Vec::<i32>::new();
|
||||||
for die in self.dice {
|
for die in self.dice {
|
||||||
die_rolls.push(die.roll());
|
die_rolls.append(&mut die.roll());
|
||||||
}
|
}
|
||||||
Outcome::List(die_rolls)
|
Outcome::List(die_rolls)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user