rust

¿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 };