Метод try_send класса SyncSender
Метод try_send класса SyncSender пытается
отправить значение в синхронный канал, не блокируя
текущий поток. Если в канале есть свободное место,
значение будет отправлено немедленно. Если буфер
канала заполнен, метод вернёт ошибку TrySendError::Full.
Если принимающая сторона отсоединена, метод вернёт
ошибку TrySendError::Disconnected. Параметром
метод принимает значение, которое нужно отправить.
Синтаксис
sync_sender.try_send(value)
Пример
Давайте создадим синхронный канал и отправим значение
через метод try_send, а затем прочитаем его:
use std::sync::mpsc::sync_channel;
fn main()
{
let (tx, rx) = sync_channel(1);
let res = tx.try_send(123);
println!("{:?}", res);
let received = rx.recv().unwrap();
println!("{}", received);
}
Результат выполнения кода:
Ok(())
123
Пример
Давайте попробуем отправить два значения в канал
с буфером размера 1 без чтения первого значения:
use std::sync::mpsc::sync_channel;
fn main()
{
let (tx, rx) = sync_channel(1);
let res1 = tx.try_send(123);
println!("{:?}", res1);
let res2 = tx.try_send(456);
println!("{:?}", res2);
let received = rx.recv().unwrap();
println!("{}", received);
}
Результат выполнения кода:
Ok(())
Err(Full(456))
123
Смотрите также
-
класс
SyncSender,
который представляет отправляющую сторону синхронного канала -
метод
send,
который блокирует поток до отправки значения -
метод
recv,
который блокирующе принимает значение из канала -
функция
sync_channel,
которая создаёт синхронный канал с буфером