¿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?