Eine Variable und eine Funktion haben denselben Namen. Wie rufe ich die Funktion auf?
fn main() {
let a = 1;
fn a() -> i32 {
2
}
println!("{}", a());
}
Der Rust-Compiler sagte mir:
error[E0618]: expected function, found `{integer}`
Mit anderen Worten, der Rust-Compiler ruft die a
Funktion nicht auf, sondern greift auf die a
Variable zu.
Antworten:
Dies ist nicht möglich, da Sie nicht sowohl die Funktion als auch die Ganzzahl im Gültigkeitsbereich haben, in dem Sie Ihre haben
println
.Da Funktionen normalerweise für den gesamten Bereich verfügbar sind (dh Sie können sie vor ihrer Deklaration verwenden), wird ihre Deklaration konzeptionell an den Anfang des Bereichs verschoben (sie werden "gehisst").
Eine Konsequenz ist, dass die Funktionsdeklaration vor der Ganzzahlvariablendeklaration steht und schattiert ist.
Die tatsächliche Korrektur Ihres Codes hängt von Ihrer genauen Situation ab. Vielleicht so etwas:
quelle