РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
663 of 1245 menu

Метод copied

Метод copied класса Iterator создаёт новый итератор, который копирует каждый элемент исходного итератора. Он применяется к итераторам, элементами которых являются ссылки на типы, реализующие трейт Copy, и возвращает итератор, выдающий уже сами скопированные значения, а не ссылки на них. Метод не принимает параметров.

Метод copied удобен, когда нужно избавиться от ссылок в цепочке итераторов и работать с обычными значениями, не разыменовывая каждый элемент вручную.

Синтаксис

iter.copied()

Пример

Давайте создадим вектор чисел и получим итератор по ссылкам, а затем с помощью метода copied преобразуем его в итератор по значениям:

fn main() { let vec = vec![1, 2, 3, 4, 5]; let res: Vec<i32> = vec.iter().copied().collect(); println!("{:?}", res); }

Результат выполнения кода:

[1, 2, 3, 4, 5]

Пример

Давайте применим метод copied к итератору по ссылкам на строковые срезы и соберём результат в вектор:

fn main() { let vec = vec!["a", "b", "c", "d", "e"]; let res: Vec<&str> = vec.iter().copied().collect(); println!("{:?}", res); }

Результат выполнения кода:

["a", "b", "c", "d", "e"]

Пример

Давайте используем метод copied вместе с методом map, чтобы умножить каждое значение на два:

fn main() { let vec = vec![1, 2, 3, 4, 5]; let res: Vec<i32> = vec.iter().copied().map(|x| x * 2).collect(); println!("{:?}", res); }

Результат выполнения кода:

[2, 4, 6, 8, 10]

Смотрите также

  • метод cloned,
    который создаёт итератор по клонированным значениям
  • метод map,
    который преобразует каждый элемент итератора
  • метод collect,
    который собирает элементы итератора в коллекцию
  • метод by_ref,
    который позволяет использовать итератор по ссылке
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить