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

Метод try_recv

Метод try_recv класса Receiver пытается получить значение из канала, не блокируя текущий поток. Он немедленно возвращает результат типа Result: Ok(value), если значение доступно, и Err(TryRecvError), если канал пуст или отправитель отсоединён. Параметров метод не принимает.

Синтаксис

receiver.try_recv()

Пример

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

use std::sync::mpsc::channel; fn main() { let (tx, rx) = channel(); tx.send(12345).unwrap(); let res = rx.try_recv(); println!("{:?}", res); }

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

Ok(12345)

Пример

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

use std::sync::mpsc::channel; fn main() { let (tx, rx) = channel::<i32>(); let res = rx.try_recv(); println!("{:?}", res); }

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

Err(Empty)

Пример

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

use std::sync::mpsc::channel; fn main() { let (tx, rx) = channel::<i32>(); drop(tx); let res = rx.try_recv(); println!("{:?}", res); }

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

Err(Disconnected)

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

  • метод recv,
    который блокирует поток до получения значения
  • метод recv_timeout,
    который блокирует поток на указанное время
  • метод send,
    который отправляет значение в канал
  • функция channel,
    которая создаёт асинхронный канал
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить