dicetest/dice/array.rs
1use crate::prelude::*;
2
3/// Generates an array with random elements.
4///
5/// # Examples
6///
7/// ```
8/// use dicetest::prelude::*;
9/// use dicetest::{Prng, Limit};
10///
11/// let mut prng = Prng::from_seed(0x5EED.into());
12/// let limit = Limit::default();
13/// let mut fate = Fate::new(&mut prng, limit);
14///
15/// let byte_die = dice::u8(..);
16/// let bytes_die = dice::array(byte_die);
17/// let [a, b, c, d] = fate.roll(bytes_die);
18/// ```
19pub fn array<T, D: Die<T>, const N: usize>(elem_die: D) -> impl Die<[T; N]> {
20 dice::from_fn(move |mut fate| [(); N].map(|_| fate.roll(&elem_die)))
21}