2014-07-27 19 views

Odpowiedz

9

Jest to po prostu decyzja projektowa: Rust stosuje metodę lokalnego wnioskowania, ale nie wnioskowania globalnego. Teoretycznie możliwe jest globalne wnioskowanie typu, ale dla ułatwienia debugowania Rust świadomie je unika, ponieważ może to prowadzić do niezwykle trudnych do debugowania problemów kompilacji (np. Niewielka zmiana w tej części powoduje błąd kompilacji w głębi wewnętrznych).

Funkcje są globalne - ich podpisy typu muszą być zatem wyraźne.

Zamknięcia, będąc wewnątrz funkcji, są lokalne - ich typy można wywnioskować. (Oczywiście, jeśli przechowujesz zamknięcie w strukturze, jego typ będzie musiał być wyraźnie określony w definicji typu struktury.)

Powiązane problemy