Ich habe diesen Code in freier Wildbahn gesehen :
fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;
Was macht die let fields = fields;
Leitung? Warum ist es dort?
Ich habe diesen Code in freier Wildbahn gesehen :
fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;
Was macht die let fields = fields;
Leitung? Warum ist es dort?
Antworten:
Es macht fields
wieder unveränderlich.
fields
wurde zuvor als veränderlich ( let mut fields = …;
) definiert, um verwendet zu werden, mit sort_by_key
welchen Sortierungen an Ort und Stelle und erfordert, dass das Ziel veränderlich ist. Der Autor hat sich hier entschieden, eine weitere Veränderlichkeit ausdrücklich zu verhindern.
Das "Herabstufen" einer veränderlichen Bindung an unveränderliche ist in Rust durchaus üblich.
Ein anderer üblicher Weg, dies zu tun, ist die Verwendung eines Blockausdrucks:
let fields = {
let mut fields = …;
fields.sort_by_key(…);
fields
};
Die Aussage let var = var;
macht var
unveränderlich und an ihren aktuellen Wert gebunden. fields
wurde wie mut
früher deklariert .