通道

Rust 通道(Channel)包含两个部分:Sender<T>Receiver<T>。这两个部分 通过通道进行连接,但你只能看到端点。

  1. use std::sync::mpsc;
  2. fn main() {
  3. let (tx, rx) = mpsc::channel();
  4. tx.send(10).unwrap();
  5. tx.send(20).unwrap();
  6. println!("Received: {:?}", rx.recv());
  7. println!("Received: {:?}", rx.recv());
  8. let tx2 = tx.clone();
  9. tx2.send(30).unwrap();
  10. println!("Received: {:?}", rx.recv());
  11. }
  • mpsc 代表多个生产方,单个使用方。SenderSyncSender 会实现 Clone(因此, 你可以设置多个生产方),但 Receiver 不会实现。
  • send()recv() 会返回 Result。如果它们返回 Err,则表示对应的 SenderReceiver 已被丢弃,且通道已关闭。