채널
러스트의 채널은 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가 삭제되었고 채널이 닫혔다는 뜻입니다.