채널
러스트의 채널은 Sender<T> 와 Receiver<T> 두 부분으로 구성됩니다. 이 둘은 채널을 통해 서로 연결되어 있지만, 우리는 채널을 볼 수는 없고 이 양 끝단만을 사용하게 됩니다.
use std::sync::mpsc; fn main() { let (tx, rx) = mpsc::channel(); tx.send(10).unwrap(); tx.send(20).unwrap(); println!("수신됨: {:?}", rx.recv()); println!("수신됨: {:?}", rx.recv()); let tx2 = tx.clone(); tx2.send(30).unwrap(); println!("수신됨: {:?}", rx.recv()); }
mpsc는 “Multi-Produce, Single-Consumer”를 의미합니다.Sender와SyncSender는Clone을 구현하지만 (즉, 여러개의 producer를 만들수 있습니다)Receiver는Clone을 구현하지 않습니다.send()와recv()는Result를 반환합니다. 만일Err가 반환된다면, 상대방의Sender또는Receiver가 삭제되었고 채널이 닫혔다는 뜻입니다.