Avatar ·

Warum kann man in Rust einen Wert und eine Referenz darauf nicht in derselben Struktur speichern?

Hallo zusammen! Ich habe angefangen, Rust zu lernen, und bin auf ein Problem gestoßen, das mich sehr verwirrt hat. Ich versuche, eine Struktur zu schreiben, die einige Daten und gleichzeitig eine Referenz auf diese Daten in sich selbst speichert. Zum Beispiel möchte ich eine Struktur erstellen, die einen String und sein erstes Zeichen enthält – eine Referenz auf diesen String.\n\nHier ist, was ich versuche:\n\n```rust\nstruct MyStruct {\n data: String,\n first_char: &str, // Referenz auf data\n}\n\nfn main() {\n let text = String::from("Hello");\n let first = &text[..1];\n let s = MyStruct { data: text, first_char: first };\n println!("{}", s.first_char);\n}\n```\n\nDer Compiler gibt einen Fehler aus: `error[E0382]: borrow of moved value: 'text'`. Ich verstehe, dass ich `first` nicht mehr verwenden kann, wenn ich `text` in die Struktur verschiebe, weil es auf eine verschobene Ressource verweist.