24 lines
568 B
Rust
24 lines
568 B
Rust
use std::time::Duration;
|
|
use tokio::sync::oneshot::channel;
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
let (tx1, rx1) = channel::<i32>();
|
|
let (_tx2, rx2) = channel::<i32>();
|
|
|
|
tokio::spawn(async move {
|
|
tokio::time::sleep(Duration::from_millis(200)).await;
|
|
tx1.send(1);
|
|
});
|
|
|
|
println!("start select");
|
|
tokio::select! {
|
|
val = rx1 => {
|
|
println!("rx1 completed first with {:?}", val);
|
|
}
|
|
val = rx2 => {
|
|
println!("rx2 completed first with {:?}", val);
|
|
}
|
|
}
|
|
println!("end select");
|
|
} |