2014-07-27 77 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使用本地類型推斷,但不使用全局類型推斷。這在理論上是可能做到全球的類型推斷,但爲了便於調試鏽病有意識地迴避它,因爲它可能導致非常難以調試編譯問題(例如,在這部分的微小變化會導致編譯錯誤深藏在內部)。

函數是全局的 - 它們的類型簽名必須是明確的。

功能內部的閉包是本地的 - 它們的類型可以推斷出來。 (當然,如果你是存儲在結構封閉,其類型將需要在結構體的類型定義中明確指定。)