【问题标题】:Differences in Type inference for closures and functions in rustrust 中闭包和函数的类型推断差异
【发布时间】:2014-07-27 02:30:56
【问题描述】:

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

【问题讨论】:

标签: type-inference rust


【解决方案1】:

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

函数是全局的——因此它们的类型签名必须是明确的。

在函数内部的闭包是局部的——它们的类型可以被推断出来。 (当然,如果您将闭包存储在结构中,则需要在结构的类型定义中明确指定其类型。)

【讨论】:

  • 有些函数像局部闭包一样是私有的。因此推断私有函数的返回类型与本地闭包具有相同的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-27
  • 1970-01-01
  • 1970-01-01
  • 2020-04-29
相关资源
最近更新 更多