2014-07-27 10 views

risposta

9

Questa è semplicemente una decisione di progettazione: Rust utilizza l'inferenza di tipo locale, ma non l'inferenza di tipo globale. È teoricamente possibile fare un'inferenza di tipo globale, ma per facilità di debugging Rust lo ha coscientemente evitato, perché può portare a problemi di compilazione estremamente difficili da correggere (ad esempio una piccola modifica in questa parte causa un errore di compilazione in profondità negli interni).

Le funzioni sono globali: il loro tipo di firme deve quindi essere esplicito.

Le chiusure, essendo all'interno di una funzione, sono locali, i loro tipi possono essere dedotti. (Naturalmente, se stai memorizzando una chiusura in una struttura, il suo tipo dovrà essere esplicitamente specificato nella definizione del tipo di struct.)