我在野外看到了这段代码:
fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;
Run Code Online (Sandbox Code Playgroud)
这条let fields = fields;线做什么?为什么会这样?
在Rust Book,Variables和Mutability的第3章中,我们对这个主题进行了几次迭代,以演示Rust中变量的默认,不可变行为:
fn main() {
let x = 5;
println!("The value of x is {}", x);
x = 6;
println!("The value of x is {}", x);
}
Run Code Online (Sandbox Code Playgroud)
哪个输出:
error[E0384]: cannot assign twice to immutable variable `x`
--> src/main.rs:4:5
|
2 | let x = 5;
| -
| |
| first assignment to `x`
| help: make this binding mutable: `mut x`
3 | println!("The value of x is {}", x);
4 | x = …Run Code Online (Sandbox Code Playgroud) 当我可以进行可变变量绑定时,为什么还需要重新绑定/阴影?考虑:
let x = a();
let x = b(x);
Run Code Online (Sandbox Code Playgroud)
与
let mut x = a();
x = b(x);
Run Code Online (Sandbox Code Playgroud)
可变变量绑定允许对此变量进行可变借用.但是,影子比可变绑定有一些优势吗?