Transmissores e Receptores

Os channels (canais) em Rust têm duas partes: um Sender<T> e um Receiver<T>. As duas partes estão conectadas através do channel, mas você só vê os end-points.

use std::sync::mpsc;

fn main() {
    let (tx, rx) = mpsc::channel();

    tx.send(10).unwrap();
    tx.send(20).unwrap();

    println!("Recebido: {:?}", rx.recv());
    println!("Recebido: {:?}", rx.recv());

    let tx2 = tx.clone();
    tx2.send(30).unwrap();
    println!("Recebido: {:?}", rx.recv());
}
This slide should take about 9 minutes.
  • mpsc significa Multi-Produtor, Único-Consumidor. Sender e SyncSender implementam Clone (então você pode criar vários produtores), mas Receiver (consumidores) não.
  • send() e recv() retornam Result. Se retornarem Err, significa que a contraparte Sender ou Receiver é descartada e o canal é fechado.