¿Qué hace ''let x=x'' en Rust?
(2)
Vi este código en la naturaleza :
fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;
¿Qué hacen los
let fields = fields;
línea hacer?
¿Por qué está ahí?
La sentencia
let var = var;
hace
var
inmutable y unido a su valor actual.
fields
fueron declarados como
mut
anteriormente.
Vuelve inmutables los
fields
.
fields
se definieron previamente como mutables (
let mut fields = …;
sort_by_key
let mut fields = …;
El autor ha elegido aquí para evitar explícitamente la mutabilidad adicional.
La "degradación" de una unión 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
};