Переменная и функция имеют одно и то же имя. Как мне вызвать функцию?
fn main() {
let a = 1;
fn a() -> i32 {
2
}
println!("{}", a());
}
Компилятор Rust сказал мне:
error[E0618]: expected function, found `{integer}`
Другими словами, компилятор Rust не вызывает a
функцию, а вместо этого обращается к a
переменной.
Ответы:
Это не может быть сделано, потому что у вас нет ни функции, ни целого числа в области видимости, где у вас есть
println
.Поскольку функции обычно доступны для всей области (т. Е. Вы можете использовать их до их объявления), их объявление концептуально перемещается в начало области (они «подняты»).
Следствием этого является то, что объявление функции находится перед объявлением целочисленной переменной и является теневым.
Реальное исправление вашего кода будет зависеть от вашей конкретной ситуации. Может быть, что-то вроде этого:
источник