scarlet_queen_core/
initializer.rs

1//! Mod for `InitializerTrait`.
2
3/// A trait for initializing a `GroupTrait`.
4///
5/// * `T` - A type of individuals generated by this.
6/// * `N` - The number of individuals generated by this.
7///
8/// # Example
9/// ```
10/// use scarlet_queen_core::InitializerTrait;
11///
12/// struct Initializer {}
13/// impl<const N: usize> InitializerTrait<u8, N> for Initializer {
14///     fn initialize() -> [u8; N] {
15///         let mut i: u8 = 0;
16///         [0; N].map(|_| {
17///             i += 1;
18///             i - 1
19///         })
20///     }
21/// }
22///
23/// let array = <Initializer as InitializerTrait<u8, 10>>::initialize();
24/// assert_eq!(array, [0u8, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
25/// ```
26pub trait InitializerTrait<T, const N: usize> {
27    /// Generate an initalized array.
28    fn initialize() -> [T; N];
29}