30 lines
728 B
Rust
30 lines
728 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() {}
|