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

Метод iter класса Receiver

Метод iter класса Receiver возвращает итератор, который последовательно принимает значения из канала. Итератор завершается, когда все соответствующие отправители Sender будут уничтожены и в канале не останется сообщений. Метод не принимает параметров.

Синтаксис

receiver.iter()

Пример

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

use std::sync::mpsc::channel; fn main() { let (tx, rx) = channel(); tx.send(1).unwrap(); tx.send(2).unwrap(); tx.send(3).unwrap(); drop(tx); for value in rx.iter() { println!("{}", value); } }

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

1 2 3

Пример

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

use std::sync::mpsc::channel; fn main() { let (tx, rx) = channel(); tx.send("a").unwrap(); tx.send("b").unwrap(); tx.send("c").unwrap(); drop(tx); let res: Vec<&str> = rx.iter().collect(); println!("{:?}", res); }

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

["a", "b", "c"]

Пример

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

use std::sync::mpsc::channel; use std::thread; fn main() { let (tx, rx) = channel(); thread::spawn(move || { tx.send(10).unwrap(); tx.send(20).unwrap(); tx.send(30).unwrap(); }); for value in rx.iter() { println!("{}", value); } }

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

10 20 30

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

  • метод recv,
    который принимает одно значение из канала
  • метод try_recv,
    который пытается принять значение без блокировки
  • метод try_iter,
    который возвращает неблокирующий итератор
  • класс Receiver,
    который представляет принимающую сторону канала
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить