Rust で 'let x = x' は何をしますか? 質問する

Rust で 'let x = x' は何をしますか? 質問する

このコードを見た野生で:

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
};

おすすめ記事