in src/shuffle.rs [32:54]
fn shuffle<R>(
&mut self,
data: &mut Vec<T>,
shuffle_len: usize,
rng: &mut R,
) -> Result<(), HwError>
where
T: Clone,
R: RngCore + ?Sized,
{
let dlen = data.len();
if dlen < shuffle_len {
return Err(HwError::ShuffleError);
}
for i in 0..shuffle_len {
// TODO: document the range implementation,
// so we can replicate the logic to other programming languages too.
let j = rng.gen_range(i..dlen);
data.swap(i, j);
}
Ok(())
}