闭包 |a: i32, b: i32| 的类型是什么? {a + b}?

问题描述 投票:0回答:1

我尝试输入 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 types closures rust-analyzer
1个回答
0
投票

闭包类型在稳定的 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 }
}

(游乐场)

© www.soinside.com 2019 - 2024. All rights reserved.