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

Метод try_iter

Метод try_iter создает итератор, который не блокирует поток при отсутствии сообщений. В отличие от метода iter, который ждет появления новых сообщений, try_iter завершает итерацию, как только очередь канала становится пустой. Параметров метод не принимает. Возвращаемый итератор выдает значения типа Result<T, TryRecvError>.

Синтаксис

receiver.try_iter()

Пример

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

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

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

1 2 3

Пример

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

use std::sync::mpsc::channel; fn main() { let (_tx, rx) = channel::<i32>(); let mut count = 0; for _ in rx.try_iter() { count += 1; } println!("{}", count); }

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

0

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

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