bracket-random 0.8.7

Random number generator (xorshift based), focused on dice rolling. Optionally includes parsing of RPG-style dice strings (e.g. "3d6+12"). Part of the bracket-lib family.
Documentation
use crate::prelude::RandomNumberGenerator;
use core::iter::Iterator;
use std::convert::TryInto;

pub struct DiceIterator<'a> {
    die_type: i32,
    rng: &'a mut RandomNumberGenerator,
}

impl<'a> DiceIterator<'a> {
    pub fn new<T>(die_type: T, rng: &'a mut RandomNumberGenerator) -> Self
    where
        T: TryInto<i32>,
    {
        let dt = die_type.try_into().ok().unwrap();
        Self { die_type: dt, rng }
    }
}

impl<'a> Iterator for DiceIterator<'a> {
    type Item = i32;

    fn next(&mut self) -> Option<i32> {
        Some(self.rng.roll_dice(1, self.die_type))
    }
}