小编Jon*_*ley的帖子

是否可以为异步函数创建类型别名?

我想创建一个类型别名来促进函数闭包,而用户不必考虑其函数的参数和返回签名。这将翻译这段代码:

async fn some_func(s: &mut Context<Props>) -> VNode {
    // some function body...
}
Run Code Online (Sandbox Code Playgroud)

进入这段代码:

static SomeFunc: FC<Props> = |ctx| async {
    // some function body
};
Run Code Online (Sandbox Code Playgroud)

在 JavaScript 中,这将使用 const 闭包函数定义而不是常规函数简写。

对于常规函数,这工作得很好:

type FC<T: Props> = fn(&mut Context<T>) -> Vnode;
Run Code Online (Sandbox Code Playgroud)

然后,静态闭包被提升为函数指针。

但是,impl Future不能在类型别名中使用(甚至在 1.51 nightly 上也不能使用),而且我也不能在类型别名中使用通用特征边界。我不知道这是否可能,但我很好奇是否有办法让类型别名适用于异步 fns。

为什么?

我正在设计的 API 将函数作为输入(而不是结构或特征对象),我希望使其易于使用。

rust async-await

6
推荐指数
1
解决办法
717
查看次数

标签 统计

async-await ×1

rust ×1