Метод 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