我尝试输入 vscode 显示的闭包类型定义内容,但这是错误的。我应该用什么来代替?
我的代码:
let x = |a: i32, b: i32| {a + b};
rust 分析仪扩展:
let x: impl Fn(i32,i32) -> i32 = |a: i32, b: i32| {a + b};
我想手动定义类型,所以我通常只会输入 rust-analyzer 提供的内容,但在这种情况下它不起作用。因为这是使用 impl 的不正确方式。我会用什么来代替?
闭包类型在稳定的 Rust 中没有名称,因此当前无法实际命名该类型。
最终,当 type_alias_impl_trait 功能稳定后,这将成为可能。例如,在每晚,您可以执行此操作,这将为闭包类型指定名称
SumI32
:
#![feature(type_alias_impl_trait)]
type SumI32 = impl Fn(i32, i32) -> i32;
fn create_sum_i32() -> SumI32 {
|a, b| { a + b }
}
(游乐场)