Senders و Receivers

کانال‌های Rust دارای دو بخش هستند: Sender<T> و Receiver<T>. این دو بخش از طریق channel به هم متصل می‌شوند، اما شما فقط نقاط پایانی (end-points) را می‌بینید.

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 stands for Multi-Producer, Single-Consumer. Sender and SyncSender implement Clone (so you can make multiple producers) but Receiver does not.
  • send() and recv() return Result. If they return Err, it means the counterpart Sender or Receiver is dropped and the channel is closed.