Метод 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,
которая создаёт асинхронный канал