通道
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
已被丢弃,且通道已关闭。