Closures
Typinferenz in Rust
Abschnitt betitelt „Typinferenz in Rust“Welche der folgenden Aussagen beschreibt am besten die Begründung, warum Rust die Typen von Argumenten/Rückgabewerten für Closures, aber nicht für Top-Level-Funktionen inferiert?
Rust könnte theoretisch Typinferenz für Top-Level-Funktionen bereitstellen. Funktionale Sprachen wie Haskell und OCaml verfügen über diese Funktion. Die Rust-Designer haben jedoch bewusst entschieden, Typannotationen für Top-Level-Funktionen zu verlangen, um die Klarheit auf der Schnittstellenebene zu fördern: Eine Funktion wird immer genau den Typ haben, den sie angibt.
Closures und Ownership
Abschnitt betitelt „Closures und Ownership“Rust erlaubt Pattern Matching innerhalb von Closure-Argumenten, einschließlich der Verwendung des Unterstrichs. Zum Beispiel könnten Sie Folgendes schreiben:
let f = |_| (); // manchmal als "Toilet Closure" bezeichnetlet s = String::from("Hello");f(s);Welche der folgenden Aussagen beschreibt am besten die Beziehung zwischen f und s in diesem Programm?
Die „Toilet Closure“ ähnelt std::mem::drop, d.h. einer Funktion, die ein Argument verschiebt und bewirkt, dass es fallen gelassen wird (dropped).