为什么在 Rust 中可以推断闭包表达式的参数类型和返回类型,但是无法推断函数的类型?
这只是一项设计决策:Rust采用局部类型推断,但不采用全局类型推断。理论上可以进行全局类型推断,但为了便于调试,Rust有意避免使用它,因为它可能导致极难调试的编译问题(例如,对此部分的轻微更改会导致内部深处的编译错误)。
函数是全局的 - 因此它们的类型签名必须是显式的。
闭包作为函数内部的局部变量,其类型可以被推断出来。(当然,如果您将一个闭包存储在结构体中,则需要在结构体的类型定义中明确指定其类型。)