通道
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
代表多个生产方,单个使用方。Sender
和SyncSender
会实现Clone
(因此, 你可以设置多个生产方),但Receiver
不会实现。send()
和recv()
会返回Result
。如果它们返回Err
,则表示对应的Sender
或Receiver
已被丢弃,且通道已关闭。