Avatar ·

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.