Класс 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)