このコードを見た野生で:
fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;
この線は何let fields = fields;
をするのですか? なぜそこにあるのか?
ベストアンサー1
再び不変になりますfields
。
fields
は、以前は mutable ( ) として定義されておりlet mut fields = …;
、インプレースでソートし、ターゲットが可変であることを要求するものと一緒に使用されていsort_by_key
ました。著者は、ここで明示的にそれ以上の可変性を防ぐことを選択しました。
可変バインディングを不変に「ダウングレード」することは、Rust では非常に一般的です。
これを行うもう 1 つの一般的な方法は、ブロック式を使用することです。
let fields = {
let mut fields = …;
fields.sort_by_key(…);
fields
};