feat: add grab_range method to Handful

This commit is contained in:
2025-11-16 10:18:01 +01:00
parent 2ed6d79b29
commit 8247fe9241
3 changed files with 30 additions and 1 deletions

View File

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

View File

@@ -1,4 +1,5 @@
use crate::*;
use std::ops::*;
impl Handful {
pub fn grab(dice_num: u16, sides: u16) -> Self {
@@ -8,4 +9,11 @@ impl Handful {
}
Self { dice }
}
pub fn grab_range(dice_num: u16, range: RangeInclusive<i32>) -> Self {
let mut dice = Vec::<Die>::new();
for _ in 1..=dice_num {
dice.push(Die::Range(range.clone()));
}
Self { dice }
}
}