Rust中的'let x = x'是做什么的?

时间:2019-02-08 15:13:54

标签: rust

我看到了这段代码in the wild

fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;

let fields = fields;行有什么作用?为什么在那儿?

2 个答案:

答案 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