Error "cannot move out of borrowed content" en Rust: ¿cómo solucionarlo?
¡Hola a todos! Empecé a aprender Rust y me encontré con un error que no puedo entender. Tengo una estructura `User` y una función que debería modificar su campo `name`. Aquí está el código:
```rust
struct User {
name: String,
age: u32,
}
fn update_name(user: &User, new_name: String) {
user.name = new_name; // Error aquí
}
fn main() {
let user = User {
name: String::from("Alice"),
age: 30,
};
update_name(&user, String::from("Bob"));
println!("{}", user.name);
}
```
El compilador muestra: `cannot move out of borrowed content` y `cannot move out of behind a shared reference`. Entiendo que estoy pasando `&User` — es una referencia inmutable, pero quiero modificar el campo `name`. Si cambio la firma a `&mut User`, el error cambia a `cannot borrow immutable local variable 'user' as mutable`. Intenté agregar `mut` antes de `user` en `main`, pero entonces el compilador dice que no se puede tomar prestado como mutable porque ya está prestado como no