我在野外看到了这段代码:
fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;
Run Code Online (Sandbox Code Playgroud)
这条let fields = fields;
线做什么?为什么会这样?
mca*_*ton 130
它fields
再次变得不可变.
fields
之前被定义为mutable(let mut fields = …;
),用于sort_by_key
在适当的位置进行排序并要求目标是可变的.作者在此选择明确防止进一步的可变性.
在Rust中,"降级"可变绑定到不可变是很常见的.
另一种常见的方法是使用块表达式:
let fields = {
let mut fields = …;
fields.sort_by_key(…);
fields
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4988 次 |
最近记录: |