Vi este código en la naturaleza :
fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;
¿Qué hace la let fields = fields;línea? ¿Por qué está ahí?
Vi este código en la naturaleza :
fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;
¿Qué hace la let fields = fields;línea? ¿Por qué está ahí?
Se vuelve fieldsinmutable de nuevo.
fieldsse definió previamente como mutable ( let mut fields = …;), para usarse con lo sort_by_keyque ordena en el lugar y requiere que el objetivo sea mutable. El autor ha optado aquí por evitar explícitamente una mayor mutabilidad.
La "degradación" de un enlace mutable a inmutable es bastante común en Rust.
Otra forma común de hacer esto es usar una expresión de bloque:
let fields = {
let mut fields = …;
fields.sort_by_key(…);
fields
};
La declaración la
let var = var;hacevarinmutable y ligada a su valor actual.fieldsfue declarado comomutantes.fuente