rustemo/
utils.rs

1/// Simple deduplication.
2/// See: <https://stackoverflow.com/a/57889826/2024430>
3pub trait Dedup<T: PartialEq + Clone> {
4    fn clear_duplicates(&mut self);
5}
6
7impl<T: PartialEq + Clone> Dedup<T> for Vec<T> {
8    fn clear_duplicates(&mut self) {
9        let mut already_seen = Vec::with_capacity(self.len());
10        self.retain(|item| match already_seen.contains(item) {
11            true => false,
12            _ => {
13                already_seen.push(item.clone());
14                true
15            }
16        })
17    }
18}