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

Метод recv

Метод recv используется для получения сообщения из канала. Он блокирует текущий поток выполнения до тех пор, пока в канале не появится сообщение или пока все отправители не будут уничтожены. Метод не принимает параметров и возвращает значение типа Result<T, RecvError>. Если канал ещё открыт, возвращается Ok(value), а если все отправители отключены - Err(RecvError).

Синтаксис

receiver.recv()

Пример

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

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

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

12345

Пример

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

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

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

"abcde"

Пример

Давайте посмотрим, что произойдёт, если все отправители будут уничтожены до вызова recv:

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

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

Err(RecvError)

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

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