2014-07-27 59 views
5

封锁和功能为什么可以推断出类型的参数和闭合式返回类型,而不是在生锈的功能?的差异类型推断在防锈

+0

A [类似的问题被问在Reddit上(HTTP://www.reddit。 com/r/rust/comments/2bcof3/rust_type_inference_question_functions_vs_closures /)。 – huon

+0

@dbaupp这是极好的coinceidence:D –

回答

9

这只是一个设计决定:Rust使用本地类型推断,但不使用全局类型推断。这在理论上是可能做到全球的类型推断,但为了便于调试锈病有意识地回避它,因为它可能导致非常难以调试编译问题(例如,在这部分的微小变化会导致编译错误深藏在内部)。

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

功能内部的闭包是本地的 - 它们的类型可以推断出来。 (当然,如果你是存储在结构封闭,其类型将需要在结构体的类型定义中明确指定。)