通道

Rust 通道(Channel)包含两个部分: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 已被丢弃,且通道已关闭。