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