Una variable y una función tienen el mismo nombre. ¿Cómo llamo a la función?
fn main() {
let a = 1;
fn a() -> i32 {
2
}
println!("{}", a());
}
El compilador de Rust me dijo:
error[E0618]: expected function, found `{integer}`
En otras palabras, el compilador Rust no llama a la a
función, sino que accede a la a
variable.
Respuestas:
Esto no se puede hacer porque no tiene tanto la función como el entero en el alcance donde tiene su
println
.Debido a que las funciones están normalmente disponibles para todo el ámbito (es decir, puede usarlas antes de su declaración), su declaración se mueve conceptualmente al inicio del ámbito (están "izadas").
Una consecuencia es que la declaración de la función está antes de la declaración de la variable entera y está sombreada.
La solución real de su código dependerá de su situación exacta. Tal vez algo como esto:
fuente