bracket-random 0.7.0

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 std::convert::TryInto;
use core::iter::Iterator;

pub struct DiceIterator {
    die_type : i32,
    rng : *mut RandomNumberGenerator
}

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

impl Iterator for DiceIterator {
    type Item = i32;

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