eryon_core/traits/
shuffle.rs

1/*
2    Appellation: shuffle <module>
3    Contrib: @FL03
4*/
5
6/// A trait for shuffling a collection
7pub trait Shuffle {
8    fn shuffle(&mut self, rng: &mut impl rand::Rng);
9}
10
11impl<T> Shuffle for Vec<T> {
12    fn shuffle(&mut self, rng: &mut impl rand::Rng) {
13        for i in (1..self.len()).rev() {
14            let j = rng.random_range(0..=i);
15            self.swap(i, j);
16        }
17    }
18}