Avatar ·

¿Cuál es la diferencia entre `mut` antes del nombre de la variable y después de los dos puntos en Rust?

¡Hola a todos! Empecé a estudiar Rust recientemente y me encontré con confusión en la sintaxis de declaración de variables. En los tutoriales veo dos formas diferentes de usar la palabra clave `mut`, y no puedo entender cuál es la diferencia entre ellas. La primera forma — `mut` se coloca antes del nombre de la variable: ```rust let mut x = 5; ``` La segunda forma — `mut` se coloca después de los dos puntos, cuando se especifica el tipo: ```rust let x: mut i32 = 5; ``` Probé ambas opciones en mi código, pero la segunda opción causa un error de compilación. Aquí está el ejemplo que escribí: ```rust fn main() { let mut a = 10; // funciona a += 5; let b: mut i32 = 20; // ¡error! b += 10; println!("a = {}, b = {}", a, b); } ``` El compilador dice algo como "expected type, found keyword mut". Pensé que `mut` se podía colocar en cualquier lugar, pero aparentemente no es así. Por favor, expliquen cuál es la diferencia entre estas opciones y por qué la segunda no funciona. ¿Quizás hay casos en los que `mut` después de los dos puntos es válido?