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

Метод cloned

Метод cloned создаёт новый итератор, который применяет метод clone к каждому элементу исходного итератора. Это полезно, когда нужно получить владение элементами итератора, не потребляя при этом сам исходный итератор. Метод не принимает параметров и возвращает новый итератор, элементами которого являются клонированные значения.

Метод cloned доступен только для итераторов, элементы которых реализуют типаж Clone. Он часто используется в связке с методами, которые возвращают итератор по ссылкам, например iter для векторов.

Синтаксис

iter.cloned()

Пример

Давайте получим итератор по ссылкам на элементы вектора и клонируем каждый элемент:

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

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

[1, 2, 3, 4, 5]

Пример

Давайте применим метод cloned к итератору по строкам:

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

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

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

Пример

Давайте используем метод cloned вместе с методом map, чтобы преобразовать элементы итератора в новые значения:

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

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

[2, 4, 6, 8, 10]

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

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