Метод dedup_by_key
Метод dedup_by_key удаляет из вектора
подряд идущие элементы, для которых переданная
функция возвращает одинаковый ключ. Параметром
метод принимает функцию, которая берёт ссылку
на элемент и возвращает ключ для сравнения.
Удаляются только соседние дубликаты, поэтому
перед вызовом вектор обычно сортируют.
Синтаксис
vec.dedup_by_key(|element| key)
Пример
Давайте удалим подряд идущие элементы вектора,
у которых совпадает остаток от деления на 2:
fn main()
{
let mut vec = vec![1, 3, 4, 6, 8, 9];
vec.dedup_by_key(|x| x % 2);
println!("{:?}", vec);
}
Результат выполнения кода:
[1, 4, 9]
Пример
Давайте удалим подряд идущие элементы вектора, у которых совпадает первый символ строки:
fn main()
{
let mut vec = vec!["abcde", "apple", "banana", "avocado"];
vec.dedup_by_key(|s| s.chars().next().unwrap());
println!("{:?}", vec);
}
Результат выполнения кода:
["abcde", "banana", "avocado"]