变量和函数具有相同的名称。如何调用函数?
fn main() {
let a = 1;
fn a() -> i32 {
2
}
println!("{}", a());
}
Run Code Online (Sandbox Code Playgroud)
Rust 编译器告诉我:
error[E0618]: expected function, found `{integer}`
Run Code Online (Sandbox Code Playgroud)
换句话说,Rust 编译器不会调用a函数,而是访问a变量。
这是无法完成的,因为您在拥有println.
因为函数通常可用于整个范围(即您可以在声明之前使用它们),所以它们的声明在概念上被移动到范围的开头(它们被“提升”)。
结果是函数声明在整数变量声明之前并被隐藏。
您的代码的真正修复将取决于您的具体情况。也许是这样的:
fn main() {
{
let a = 1;
// use the integer there
}
fn a() -> i32 {
2
}
println!("{}", a());
}
Run Code Online (Sandbox Code Playgroud)