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

Класс Receiver

Класс Receiver представляет принимающую сторону канала в Rust. Он используется для получения значений, которые были отправлены через соответствующий Sender. Объект Receiver создаётся функцией channel или sync_channel и работает в паре с отправителем. Получить значение из приёмника можно с помощью методов recv, try_recv или recv_timeout. Также Receiver можно использовать как итератор.

Синтаксис

let (tx, rx) = channel(); let value = rx.recv();

Пример

Давайте создадим канал, отправим в него число и получим его через приёмник:

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

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

123

Пример

Давайте отправим в канал несколько строк и получим их в цикле через итератор:

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

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

"abcde" "12345"

Пример

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

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

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

Err(Empty)

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

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