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}