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 fieldswieder unveränderlich.
fieldswurde zuvor als veränderlich ( let mut fields = …;) definiert, um verwendet zu werden, mit sort_by_keywelchen 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 varunveränderlich und an ihren aktuellen Wert gebunden. fieldswurde wie mutfrüher deklariert .