pub fn channel<T>() -> (Sender<T>, Receiver<T>)
Creates a new asynchronous channel, returning the sender/receiver halves. All data sent on the Sender
will become available on the Receiver
in the same order as it was sent, and no send
will block the calling thread (this channel has an "infinite buffer", unlike sync_channel
, which will block after its buffer limit is reached). recv
will block until a message is available.
The Sender
can be cloned to send
to the same channel multiple times, but only one Receiver
is supported.
If the Receiver
is disconnected while trying to send
with the Sender
, the send
method will return a SendError
. Similarly, if the Sender
is disconnected while trying to recv
, the recv
method will return a RecvError
.
use std::sync::mpsc::channel; use std::thread; let (sender, receiver) = channel(); // Spawn off an expensive computation thread::spawn(move|| { sender.send(expensive_computation()).unwrap(); }); // Do some useful work for awhile // Let's see what that answer was println!("{:?}", receiver.recv().unwrap());
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/sync/mpsc/fn.channel.html