26 lines
704 B
Rust
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() {}
|