Rust 锈蚀:方法“;投票;在'impl std::future::future'中找不到`
我试图学习异步编程,但这个非常基本的示例不起作用:Rust 锈蚀:方法“;投票;在'impl std::future::future'中找不到`,rust,Rust,我试图学习异步编程,但这个非常基本的示例不起作用: use std::future::Future; fn main() { let t = async { println!("Hello, world!"); }; t.poll(); } 我从说明书中读到的所有信息都表明这应该是可行的,但cargo抱怨在“impl std::future::future”中找不到“poll”方法。我做错了什么?有以下签名: fn poll(self:Pin,cx:&
use std::future::Future;
fn main() {
let t = async {
println!("Hello, world!");
};
t.poll();
}
我从说明书中读到的所有信息都表明这应该是可行的,但cargo抱怨在“impl std::future::future”中找不到“poll”方法。我做错了什么?有以下签名:
fn poll(self:Pin,cx:&mut Context
参数。该上下文由异步运行时创建,并传递给最外层未来的poll
函数。这意味着您不能只轮询这样的未来,您需要在异步运行时中进行轮询
相反,您可以使用板条箱或在同步上下文中运行future:
东京
使用tokio::runtime::runtime;
让runtime=runtime::new().unwrap();
让result=runtime.block_开启(异步{
// ...
});
//异步标准
让结果=async_std::task::block_on(异步{
// ...
})
或者更好,您可以使用或将main
函数转换为异步函数:
东京
#[tokio::main]
异步fn main(){
// ...
}
//异步标准
#[async_std::main]
异步fn main(){
// ...
}
您到底想用代码做什么?通常在编写异步应用程序时,您不会直接使用
。poll
,而是使用await
或来自的方法。我主要只是学习系统如何工作。我不能在非异步上下文中使用await,因此我试图找出如何调用异步方法在非异步上下文中。