Cómo corregir el error "use of moved value" en Rust
¡Hola! He empezado a estudiar Rust y constantemente me encuentro con el error "use of moved value". Aquí hay un ejemplo simple que lo provoca:
```rust
fn main() {
let s = String::from("привет");
let t = s;
println!("{}", s); // error: use of moved value: `s`
}
```
Entiendo que Rust controla estrictamente la propiedad (ownership), pero no logro entender cómo transferir datos correctamente entre variables y funciones. Por ejemplo, quiero escribir una función que recibe un string, hace algo con él, y luego quiero usar ese string de nuevo en main:
```rust
fn process(s: String) -> String {
// algún procesamiento
s
}
fn main() {
let my_string = String::from("тест");
let result = process(my_string);
println!("{}", my_string); // ¡otro error!
}
```
¿Por qué ocurre esto? En C++ simplemente pasaría por referencia o copiaría, pero aquí no funciona. ¿Cómo organizar el código correctamente para evitar este error? Explíquenme, por favor, con ejemplos qué es la propiedad (ownership), el préstamo (borrowing) y las referencias.
No answers yet.
Inicia sesión para dejar una respuesta