通道

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

1. use std::sync::mpsc;

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

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

9. println!("Received: {:?}", rx.recv());
10. println!("Received: {:?}", rx.recv());

12. let tx2 = tx.clone();
13. tx2.send(30).unwrap();
14. println!("Received: {:?}", rx.recv());
15. }
  • mpsc 代表多个生产方,单个使用方。Sender 和 SyncSender 会实现 Clone(因此, 你可以设置多个生产方),但 Receiver 不会实现。
  • send() 和 recv() 会返回 Result。如果它们返回 Err,则表示对应的 Sender 或 Receiver 已被丢弃,且通道已关闭。