Perché è possibile inferire i tipi di argomenti e il tipo di ritorno per un'espressione di chiusura mentre non per una funzione in ruggine?Differenze nell'inferenza di tipo per chiusure e funzioni in ruggine
risposta
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.)
A [domanda simile è stata chiesta su reddit] (http: //www.reddit. com/r/ruggine/commenti/2bcof3/rust_type_inference_question_functions_vs_closures /) poco fa. – huon
@dbaupp Questa è una superba coinceidenza: D –