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?
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;
machtvar
unveränderlich und an ihren aktuellen Wert gebunden.fields
wurde wiemut
früher deklariert .quelle