簡體   English   中英

Rust async function 可以在不導入 Future 特征的情況下工作嗎?

[英]Can a Rust async function work without importing the Future trait?

在下面的代碼中,我沒有導入Future特征:

async fn hello_world() {
    println!("hello, world!");
}

fn main() {
    let future = hello_world(); 
}

但它仍然可以編譯。 但是它不會打印任何東西。

根據為什么 async fn in traits 很難

 impl MyDatabase { async fn get_user(&self) -> User {... } }

這將被脫糖為類似於:

 impl MyDatabase { fn get_user(&self) -> impl Future<Output = User> + '_ {... } }

如果沒有導入Future特征,如何進行脫糖? 更重要的是,為什么Future trait 沒有在 Rust 本身中定義,而是在一個 crate 中?

如果沒有導入Future特征,如何進行脫糖?

編譯器去糖到完全限定的路徑: core::future::Future

為什么Future特征沒有在 Rust 本身中定義,而是在一個板條箱中?

在標准庫中: std::future::Future Rust API文檔有搜索function; 我鼓勵你熟悉它。

Future特征在添加到標准庫之前在期貨箱定義,很像Stream特征。 這兩者現在都存在於標准庫中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM