1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
pub fn assign_to_lhs<T: Copy, F>(lhs: &mut [T], rhs: &[T], f: F)
where
    F: Fn(&mut T, T),
{
    let len = core::cmp::min(lhs.len(), rhs.len());

    let rhs = &rhs[..len];
    let lhs_slice = &mut lhs[..len];

    for idx in 0..len {
        f(&mut lhs_slice[idx], rhs[idx])
    }
}

pub fn assign_to_lhs_scalar<T: Copy, F>(lhs: &mut [T], rhs: T, f: F)
where
    F: Fn(&mut T, T),
{
    for value in lhs {
        f(value, rhs)
    }
}