Canais (Channels)

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());
}
  • 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.