考虑以下代码:
fn main() {
let foo = 1;
let bar: i32 = -&foo; //ok, -1
let baz: i32 = &foo; //error, expected `i32`, found `&{integer}`
let bad: i32 = !&foo; //ok, -2
}
通读Rust Reference我发现
可能的胁迫地点包括:
- 给出显式类型的let陈述.
[...]
- 函数调用的参数
因此let baz: i32 = &foo;
也应该起作用,因为它是一个带有显式类型的let声明.
为什么拒绝编制?