为什么可以推断闭包表达式的参数类型和返回类型,而不是rust中的函数?

推荐答案

这只是一个设计决策:Rust使用局部类型推断,而不是全局类型推断.从理论上讲,可以进行全局类型推断,但为了便于调试,Rust有意识地避开了它,因为它可能会导致极难调试编译问题(例如,本部分中的一个小更改会导致内部深层的编译错误).

函数是全局函数,因此它们的类型签名必须是显式的.

闭包位于函数内部,是局部的,其类型可以推断.(当然,如果要在 struct 中存储闭包,则需要在 struct 的类型定义中显式指定其类型.)

Rust相关问答推荐

为什么父作用域中的变量超出了子作用域

在Tauri中获取ICoreWebView 2_7以打印PDF

为什么幻影数据不能自动推断?

为什么类型需要在这个代码中手动指定,在rust?

如果A == B,则将Rc A下推到Rc B

为什么实例方法可以像Rust中的静态方法一样被调用?

如何向下转换到MyStruct并访问Arc Mutex MyStruct实现的方法?

如何将单个 struct 实例与插入器一起传递到Rust中的映射

铁 rust 中双倍或更多换行符的更好练习?

在Rust中声明和定义一个 struct 体有什么区别

无法将 rust 蚀向量附加到另一个向量

什么时候使用FuturesOrdered?

为什么rustc会自动降级其版本?

Tokio';s io::用Cursor拆分<;Vec<;u8>>;赢得';t get the full writted data

write_buffer 不写入缓冲区而是输出零 WGPU

枚举的利基优化如何在 Rust 中工作?

rust tokio::spawn 在 mutexguard 之后等待

Rust 将特性传递给依赖项

基于名称是否存在的条件编译

如何在 Rust 中使用特征标志来捕获多行代码?