Класс Sender
Класс Sender представляет отправляющую половину
канала, созданного функциями channel или
sync_channel. Он используется для передачи
значений принимающей стороне - Receiver.
Метод send принимает значение, которое нужно
отправить в канал. Класс Sender можно клонировать
для создания нескольких отправителей, работающих с одним
и тем же каналом. Когда все экземпляры Sender
уничтожены, канал закрывается.
Синтаксис
use std::sync::mpsc::channel;
let (tx, rx) = channel();
tx.send(value)
Пример
Давайте создадим канал и отправим в него строку
"abcde", а затем примем её:
use std::sync::mpsc::channel;
fn main()
{
let (tx, rx) = channel();
tx.send("abcde").unwrap();
let res = rx.recv().unwrap();
println!("{}", res);
}
Результат выполнения кода:
"abcde"
Пример
Давайте отправим несколько чисел через один канал:
use std::sync::mpsc::channel;
fn main()
{
let (tx, rx) = channel();
tx.send(1).unwrap();
tx.send(2).unwrap();
tx.send(3).unwrap();
let res: Vec<i32> = rx.iter().collect();
println!("{:?}", res);
}
Результат выполнения кода:
[1, 2, 3]
Пример
Давайте клонируем Sender и отправим данные
из двух разных отправителей:
use std::sync::mpsc::channel;
fn main()
{
let (tx, rx) = channel();
let tx2 = tx.clone();
tx.send("12345").unwrap();
tx2.send("abcde").unwrap();
let res1: String = rx.recv().unwrap();
let res2: String = rx.recv().unwrap();
println!("{} {}", res1, res2);
}
Результат выполнения кода:
"12345 abcde"