Sender と Receiver

Rust のチャネルは 2 つの部分から成ります: Sender<T>Receiver<T> です。この 2 つの部分はチャネルを介して接続されていますが、見えるのはエンドポイントだけです。

// 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());
}
  • mpsc は Multi-Producer, Single-Consumer の略です。SenderSyncSenderClone を実装しているため、複数の送信側を作成できますが、Receiver は実装していません。
  • send()recv()Result を返します。Err が返された場合、対応する Sender または Receiver がドロップされ、チャネルが閉じられていることを意味します。