pub trait SetRange<T, const N: usize, const NS: usize>
where
T: Copy,
{
fn set_range(&mut self, start_idx: usize, source: [T; NS]) -> &mut Self;
}
impl<T, const N: usize, const NS: usize> SetRange<T, N, NS> for [T; N]
where
T: Copy,
{
fn set_range(&mut self, start_idx: usize, source: [T; NS]) -> &mut Self {
for (i, j) in (start_idx..start_idx + NS).zip(0..NS) {
self[i] = source[j];
}
self
}
}
#[cfg(test)]
mod tests {
use super::SetRange;
#[test]
fn it_works() {
let mut arr = [0; 20];
let arr1 = [1; 10];
arr.set_range(1, arr1);
assert_eq!(
arr,
[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
);
}
}