Відправники та отримувачі

Канали Rust мають дві частини: Sender<T> і Receiver<T>. Дві частини з’єднані через канал, але ви бачите лише кінцеві точки.

use std::sync::mpsc;

fn main() {
    let (tx, rx) = mpsc::channel();

    tx.send(10).unwrap();
    tx.send(20).unwrap();

    println!("Прийнято: {:?}", rx.recv());
    println!("Прийнято: {:?}", rx.recv());

    let tx2 = tx.clone();
    tx2.send(30).unwrap();
    println!("Прийнято: {:?}", rx.recv());
}
This slide should take about 9 minutes.
  • mpsc означає багато виробників, один споживач (Multi-Producer, Single-Consumer). Sender і SyncSender реалізують Clone (тобто ви можете створити кілька виробників), а Receiver — ні.
  • send() і recv() повертають Result. Якщо вони повертають Err, це означає, що відповідний Sender або Receiver видалено, а канал закрито.