use crate::prelude::RandomNumberGenerator;
use core::iter::Iterator;
use std::convert::TryInto;
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)) }
}
}