我想创建一个类型别名来促进函数闭包,而用户不必考虑其函数的参数和返回签名。这将翻译这段代码:
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 将函数作为输入(而不是结构或特征对象),我希望使其易于使用。