Метод map
Метод map преобразует каждый элемент итератора,
применяя к нему переданную функцию-замыкание.
Он возвращает новый итератор, элементы которого
являются результатами применения этой функции.
Параметром метод принимает замыкание, которое
получает текущий элемент и возвращает преобразованное значение.
Синтаксис
iter.map(f)
Пример
Давайте умножим каждый элемент вектора на два:
fn main()
{
let vec = vec![1, 2, 3, 4, 5];
let res: Vec<i32> = vec.iter().map(|x| x * 2).collect();
println!("{:?}", res);
}
Результат выполнения кода:
[2, 4, 6, 8, 10]
Пример
Давайте преобразуем числа в строки:
fn main()
{
let vec = vec![1, 2, 3, 4, 5];
let res: Vec<String> = vec.iter().map(|x| x.to_string()).collect();
println!("{:?}", res);
}
Результат выполнения кода:
["1", "2", "3", "4", "5"]
Пример
Давайте получим длины строк из вектора:
fn main()
{
let vec = vec!["abcde", "12345", "abc", "12"];
let res: Vec<usize> = vec.iter().map(|s| s.len()).collect();
println!("{:?}", res);
}
Результат выполнения кода:
[5, 5, 3, 2]
Смотрите также
-
класс
Iterator,
который представляет собой итератор по элементам коллекции -
метод
filter,
который оставляет только элементы, удовлетворяющие условию -
метод
filter_map,
который одновременно фильтрует и преобразует элементы -
метод
collect,
который собирает элементы итератора в коллекцию