Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Отправители и получатели

У каналов 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 освобождён и канал закрыт.