Uma variável e função têm o mesmo nome. Como chamo a função?
fn main() {
let a = 1;
fn a() -> i32 {
2
}
println!("{}", a());
}
O compilador Rust me disse:
error[E0618]: expected function, found `{integer}`
Em outras palavras, o compilador Rust não chama a a
função, mas acessa a a
variável.
Respostas:
Isso não pode ser feito porque você não possui a função e o número inteiro no escopo em que está
println
.Como as funções estão normalmente disponíveis para todo o escopo (ou seja, você pode usá-las antes da declaração), a declaração delas é movida conceitualmente para o início do escopo (elas são "içadas").
Uma conseqüência é que a declaração da função está antes da declaração da variável inteira e é sombreada.
A correção real do seu código dependeria da sua situação exata. Talvez algo parecido com isto:
fonte