fparkan/vendor/flume/examples/select.rs
Valentin Popov 1b6a04ca55
Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
2024-01-08 01:21:28 +04:00

26 lines
704 B
Rust

#[cfg(feature = "select")]
use flume::Selector;
#[cfg(feature = "select")]
fn main() {
// Create two channels
let (red_tx, red_rx) = flume::unbounded();
let (blue_tx, blue_rx) = flume::unbounded();
// Spawn two threads that each send a message into their respective channel
std::thread::spawn(move || { let _ = red_tx.send("Red"); });
std::thread::spawn(move || { let _ = blue_tx.send("Blue"); });
// Race them to see which one sends their message first
let winner = Selector::new()
.recv(&red_rx, |msg| msg)
.recv(&blue_rx, |msg| msg)
.wait()
.unwrap();
println!("{} won!", winner);
}
#[cfg(not(feature = "select"))]
fn main() {}