scarlet_queen_initializer/
random.rs1use rand::{
2 distr::{Distribution, StandardUniform},
3 rng, Rng,
4};
5use scarlet_queen_core::InitializerTrait;
6
7#[derive(Debug)]
8pub struct RandomInitializer<const N: usize> {}
9
10impl<T, const N: usize> InitializerTrait<T, N> for RandomInitializer<N>
11where
12 StandardUniform: Distribution<T>,
13{
14 fn initialize() -> [T; N] {
15 let mut rng = rng();
16 [0; N].map(|_| rng.random::<T>())
17 }
18}
19
20#[cfg(test)]
21mod tests {
22 use scarlet_queen_core::InitializerTrait;
23
24 use crate::random::RandomInitializer;
25
26 #[test]
27 fn test_initializer() {
28 let initialized: [u8; 10] =
29 <RandomInitializer<10> as InitializerTrait<u8, 10>>::initialize();
30 assert_eq!(initialized.len(), 10);
31 }
32}