天天看點

009 Rust 異步程式設計,select 宏中的使用 default 和 complete

說明

示例

  • 源代碼
use futures::{future, select};
use tokio::runtime::Runtime;

async fn count() {
    let mut a_fut = future::ready(4);
    let mut b_fut = future::ready(6);
    let mut total = 0;

    loop {
        select! {
            a = a_fut => total += a,
            b = b_fut => total += b,
            complete => break,
            default => unreachable!(), // never runs (futures are ready, then complete)
        };
    }
    assert_eq!(total, 10);
}

fn main() {
    let mut runtime = Runtime::new().unwrap();
    runtime.block_on(count());  
}      
  • 配置
[dependencies]
futures = "0.3.5"
tokio = { version = "0.2", features = ["full"] }      

繼續閱讀