說(shuō)明
在前一節(jié),我們簡(jiǎn)單介紹了select宏。其實(shí)在select宏中,還可使用default和complete,前者表示沒(méi)有分支完成,而后者則表示所有的分支都已經(jīng)完成并且不會(huì)再取得進(jìn)展的情況。
示例
- 源代碼
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"] }