通道
Rust 通道分為兩個部分: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
已釋放,且通道已關閉。