Avatar ·

Por que não é possível armazenar um valor e uma referência a ele na mesma estrutura em Rust?

Olá a todos! Comecei a estudar Rust e me deparei com um problema que me deixou muito confuso. Estou tentando escrever uma estrutura que armazena alguns dados e, ao mesmo tempo, uma referência a esses dados dentro de si mesma. Por exemplo, quero criar uma estrutura que contenha uma string e seu primeiro caractere — uma referência a essa string. Aqui está o que estou tentando fazer: ```rust struct MyStruct { data: String, first_char: &str, // referência 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); } ``` O compilador emite um erro: `error[E0382]: borrow of moved value: 'text'`. Entendo que quando movo `text` para a estrutura, não posso mais usar `first`, porque ele referencia o endereço antigo. Mas como projetar corretamente tal estrutura? Em outras linguagens, eu podia armazenar um objeto e um ponteiro para seu campo sem problemas. Por que Rust é tão rigoroso? Existe alguma maneira de armazenar um valor e uma referência a ele na mesma estrutura?