Eu vi este código à solta :
fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;
O que a let fields = fields;
linha faz? Por que está aí?
Torna fields
imutável novamente.
fields
foi definido anteriormente como mutable ( let mut fields = …;
), para ser usado com o sort_by_key
qual classifica no local e requer que o destino seja mutável. O autor optou aqui por prevenir explicitamente mais mutabilidade.
"Desclassificar" uma ligação mutável para imutável é bastante comum em Rust.
Outra maneira comum de fazer isso é usar uma expressão de bloco:
let fields = {
let mut fields = …;
fields.sort_by_key(…);
fields
};
A declaração
let var = var;
torna-sevar
imutável e limitada ao seu valor atual.fields
foi declarado comomut
antes.fonte