fn shuffle()

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(())
    }