Wie gebe ich einen Verweis auf eine Variable zurück, die innerhalb einer Funktion in Rust erstellt wurde?
Hallo zusammen! Ich habe gerade angefangen, Rust zu lernen, und bin auf ein Problem gestoßen, das ich nicht lösen kann. Ich schreibe eine Funktion, die einen String innerhalb von sich selbst erstellt, ihn verarbeitet und dann einen Verweis auf diesen String zurückgeben möchte. Hier ist ein vereinfachter Code:
```rust
fn get_data() -> &str {
let data = String::from("Hello, world!");
&data
}
```
Der Compiler gibt einen Fehler aus: `cannot return reference to local variable 'data'`. Ich verstehe, dass dies mit Lebenszeiten (lifetimes) zusammenhängt, aber mir ist das Wesen nicht ganz klar. In C++ könnte ich einen Zeiger auf ein lokales Array zurückgeben (auch wenn es UB ist), und in Python gibt es dieses Problem gar nicht. Wie kann ich korrekt einen Verweis auf einen String zurückgeben, der innerhalb einer Funktion erstellt wurde? Ich brauche, dass die Funktion genau &str zurückgibt, nicht String, weil ich es später an andere Funktionen übergeben werde, die einen slice erwarten.
Ich habe über Eigentum (ownership) und Ausleihe (borrowing) gelesen, aber dieser spezielle Fall verwirrt mich. Warum verbietet Rust dies, und welche Workarounds gibt es? Vielleicht...