Types 什么';异步fn的类型是什么?

Types 什么';异步fn的类型是什么?,types,async-await,rust,future,Types,Async Await,Rust,Future,我想要一个函数,它采用了async fn f在fn run中的类型应该是什么 async fn foo() {} fn run(f: /* ??? */) {} 根据报告: 异步fn foo(args..)->T是类型为fn(args..)->impl Future的函数 然而,如果我写 fn run(f: fn() -> impl Future<()>) 您必须在函数签名中引入两个类型参数,一个用于Fn,另一个用于未来,例如 #![feature(futures_api

我想要一个函数,它采用了
async fn

f
fn run
中的类型应该是什么

async fn foo() {}

fn run(f: /* ??? */) {}
根据报告:

异步fn foo(args..)->T是类型为
fn(args..)->impl Future
的函数

然而,如果我写

fn run(f: fn() -> impl Future<()>)

您必须在函数签名中引入两个类型参数,一个用于
Fn
,另一个用于
未来
,例如

#![feature(futures_api, async_await)]

async fn foo() {}

fn run<G: std::future::Future, F: FnOnce() -> G>(f: F) {
    f();
}

fn main() {
    bar(foo)
}
#![功能(未来api、异步等待)]
异步fn foo(){}
fn运行G>(f:f){
f();
}
fn main(){
酒吧(富)
}

根据需要,您可以使用
Fn
FnMut
替换
FnOnce

使用泛型类型参数会有所帮助,因为
异步Fn
返回
未来
特征的实现

#![feature(futures_api, async_await)]

use std::future::Future;

fn main() {
    run(foo);
}

async fn foo() {}

fn run<T: Future>(f: fn() -> T) {
    f();
}
#![功能(未来api、异步等待)]
使用std::future::future;
fn main(){
跑步(foo);
}
异步fn foo(){}
fn运行(f:fn()->T){
f();
}

异步进程正在进行中/await@hellow我更新了我的问题,我认为我的问题与你建议的完全不同。好吧,我可以接受,谢谢你编辑你的问题:)也许这是重复的?