Une variable et une fonction ont le même nom. Comment appeler la fonction?
fn main() {
let a = 1;
fn a() -> i32 {
2
}
println!("{}", a());
}
Le compilateur Rust m'a dit:
error[E0618]: expected function, found `{integer}`
En d'autres termes, le compilateur Rust n'appelle pas la a
fonction, mais accède à la place à la a
variable.
Réponses:
Cela ne peut pas être fait car vous n'avez pas à la fois la fonction et l'entier dans la portée où vous avez votre
println
.Étant donné que les fonctions sont normalement disponibles pour l'ensemble de la portée (c'est-à-dire que vous pouvez les utiliser avant leur déclaration), leur déclaration est conceptuellement déplacée au début de la portée (elles sont "hissées").
Une conséquence est que la déclaration de fonction est antérieure à la déclaration de variable entière et est masquée.
La vraie correction de votre code dépendrait de votre situation exacte. Peut-être quelque chose comme ça:
la source