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