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

Метод 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,
    которая создаёт синхронный канал с буфером
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить