通道

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!("Received: {:?}", rx.recv());
    println!("Received: {:?}", rx.recv());

    let tx2 = tx.clone();
    tx2.send(30).unwrap();
    println!("Received: {:?}", rx.recv());
}
  • mpsc 代表多重生產者、唯一消費者。SenderSyncSender 會實作 Clone (用於製作多重生產者),但 Receiver 不會。
  • send()recv() 會傳回 Result。如果傳回的是 Err,表示對應的 SenderReceiver 已釋放,且通道已關閉。