Отправители и получатели
У каналов Rust две части: Sender<T> и Receiver<T>. Эти две части связаны через канал, но вы видите только его концы.
// Copyright 2024 Google LLC
// SPDX-License-Identifier: Apache-2.0
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());
}
This slide should take about 9 minutes.
mpscрасшифровывается как Multi-Producer, Single-Consumer (много отправителей, один получатель).SenderиSyncSenderреализуютClone(поэтому можно создать несколько отправителей), аReceiver— нет.send()иrecv()возвращаютResult. Если они возвращаютErr, это значит, что парныйSenderилиReceiverосвобождён и канал закрыт.