bracket_random/
iterators.rs1use crate::prelude::RandomNumberGenerator;
2use core::iter::Iterator;
3use std::convert::TryInto;
4
5pub struct DiceIterator<'a> {
6 die_type: i32,
7 rng: &'a mut RandomNumberGenerator,
8}
9
10impl<'a> DiceIterator<'a> {
11 pub fn new<T>(die_type: T, rng: &'a mut RandomNumberGenerator) -> Self
12 where
13 T: TryInto<i32>,
14 {
15 let dt = die_type.try_into().ok().unwrap();
16 Self { die_type: dt, rng }
17 }
18}
19
20impl<'a> Iterator for DiceIterator<'a> {
21 type Item = i32;
22
23 fn next(&mut self) -> Option<i32> {
24 Some(self.rng.roll_dice(1, self.die_type))
25 }
26}