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

Трейт FromIterator

Трейт FromIterator позволяет создать значение типа, реализующего этот трейт, из итератора. Он широко используется для преобразования итераторов в коллекции, такие как векторы, строки, множества и другие. Основной метод трейта - from_iter - принимает итератор и возвращает новое значение коллекции.

Синтаксис

trait FromIterator<A> { fn from_iter<T>(iter: T) -> Self where T: IntoIterator<Item = A>; }

Пример

Давайте создадим вектор из итератора с помощью метода from_iter:

fn main() { let res = Vec::from_iter(1..=5); println!("{:?}", res); }

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

[1, 2, 3, 4, 5]

Пример

Давайте соберём строку из итератора символов с помощью метода collect, который использует трейт FromIterator:

fn main() { let res: String = "abcde".chars().collect(); println!("{}", res); }

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

"abcde"

Пример

Давайте создадим множество из итератора чисел с помощью трейта FromIterator:

use std::collections::HashSet; fn main() { let res: HashSet<i32> = HashSet::from_iter(vec![1, 2, 2, 3, 3, 4]); println!("{:?}", res); }

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

{1, 2, 3, 4}

Пример

Давайте создадим собственную коллекцию, реализующую трейт FromIterator:

struct MyCollection { items: Vec<i32>, } impl FromIterator<i32> for MyCollection { fn from_iter<T: IntoIterator<Item = i32>>(iter: T) -> Self { MyCollection { items: iter.into_iter().collect(), } } } fn main() { let res = MyCollection::from_iter(vec![1, 2, 3, 4, 5]); println!("{:?}", res.items); }

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

[1, 2, 3, 4, 5]

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

  • трейт IntoIterator,
    который позволяет преобразовать тип в итератор
  • трейт FromIterator,
    который создаёт коллекцию из итератора
  • трейт Default,
    который создаёт значение по умолчанию
  • ключевое слово impl Trait,
    которое позволяет указывать трейт в сигнатуре функции
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить