Метод retain
Метод retain проходится по всем элементам вектора
и оставляет только те, для которых замыкание-предикат
возвращает true. Все элементы, для которых
предикат вернул false, удаляются из вектора.
Параметром метод принимает замыкание, которое получает
ссылку на текущий элемент и возвращает bool.
Порядок оставшихся элементов сохраняется.
Синтаксис
vec.retain(|x| condition)
Пример
Давайте оставим в векторе только чётные числа:
fn main()
{
let mut vec = vec![1, 2, 3, 4, 5];
vec.retain(|x| x % 2 == 0);
println!("{:?}", vec);
}
Результат выполнения кода:
[2, 4]
Пример
Давайте оставим в векторе только числа, большие трёх:
fn main()
{
let mut vec = vec![1, 2, 3, 4, 5];
vec.retain(|x| *x > 3);
println!("{:?}", vec);
}
Результат выполнения кода:
[4, 5]
Пример
Давайте оставим в векторе только строки, начинающиеся
с буквы "a":
fn main()
{
let mut vec = vec!["abcde", "xyz", "apple", "banana"];
vec.retain(|x| x.starts_with("a"));
println!("{:?}", vec);
}
Результат выполнения кода:
["abcde", "apple"]