我看到了这段代码in the wild:
fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;
let fields = fields;
行有什么作用?为什么在那儿?
答案 0 :(得分:126)
它再次使fields
不可变。
fields
先前被定义为可变的(let mut fields = …;
),与sort_by_key
一起使用,该参数就地排序并且要求目标是可变的。作者在此处选择以明确防止进一步的变异。
在Rust中将可变的绑定“降级”到不可变是很常见的。
执行此操作的另一种常见方法是使用块表达式:
let fields = {
let mut fields = …;
fields.sort_by_key(…);
fields
};
答案 1 :(得分:16)
语句let var = var;
使var
不可变并绑定到其当前值。 fields
之前被声明为mut
。