Avatar ·

¿Por qué no se puede almacenar un valor y una referencia a él en la misma estructura en Rust?

¡Hola a todos! Empecé a estudiar Rust y me encontré con un problema que me dejó muy perplejo. Estoy intentando escribir una estructura que almacene algunos datos y al mismo tiempo una referencia a esos datos dentro de sí misma. Por ejemplo, quiero crear una estructura que contenga un string y su primer carácter — una referencia a ese string. Esto es lo que intento hacer: ```rust struct MyStruct { data: String, first_char: &str, // referencia a data } fn main() { let text = String::from("Hello"); let first = &text[..1]; let s = MyStruct { data: text, first_char: first }; println!("{}", s.first_char); } ``` El compilador da un error: `error[E0382]: borrow of moved value: 'text'`. Entiendo que cuando muevo `text` a la estructura, ya no puedo usar `first`, porque hace referencia a la dirección anterior. Pero entonces, ¿cómo diseñar correctamente una estructura así? En otros lenguajes podía almacenar tranquilamente un objeto y un puntero a su campo. ¿Por qué Rust es tan estricto? ¿Hay alguna manera de almacenar un valor y una referencia a él en la misma estructura?