Rust async 关键字

发布时间 2023-07-01 18:30:09作者: develon

async

观察代码:

async fn dd(a: i32) -> i32 {
    dbg!(a);
    2 * a
}

异步方法内可以执行await,很显然上面的代码等价于下面两种形式:

async fn dd(a: i32) -> i32 {
    dbg!(a);
    async { 2 * a }.await
}

async fn dd(a: i32) -> i32 {
    async move { 
      dbg!(a);
      2 * a
    }.await
}

只有执行await,一个异步方法或者异步代码块才会被执行,所以上面的代码其实又等价于:

fn dd(a: i32) -> Future<Output = i32> {
    async move { 
      dbg!(a);
      2 * a
    }
}