我正在学习Rust中的async/await,并且我正在按照tokio的教程进行学习。在教程中,有一件事情让我困扰,但是教程似乎没有解释。请参考这个链接:tutorial。
这是教程中的写法,但我不明白为什么在这里使用了
所以,我的问题是:
tokio::spawn(async move {
process(socket).await;
});
这是教程中的写法,但我不明白为什么在这里使用了
async move {}
块。根据我目前的理解,这个异步块是不必要的,也就是说,下面的写法完全可以,并且更加简洁直接:tokio::spawn(process(socket));
所以,我的问题是:
- 在这段代码中,async块是否必要?
- 如果是的话,它有什么区别?
- 没有编译器优化的情况下,async块会不会增加额外的间接层,可能导致性能略微下降?