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}