Rückkehr lokalen Zeichenfolge als eine Scheibe (&str)

Gibt es einige Fragen, die zu sein scheinen etwa das gleiche problem das ich habe. Siehe zum Beispiel hier und hier. Grundsätzlich bin ich versucht zu bauen String in einer lokalen Funktion, aber dann wieder es als &str. Schneiden funktioniert nicht, denn die Lebenszeit ist zu kurz. Ich kann nicht mit str direkt in die Funktion, weil ich Sie brauche um es zu bauen dynamisch. Allerdings würde ich auch bevorzugen, nicht zurückzukehren, eine String da die Art des Objektes dies wird in statisch ist, sobald es gebaut wird. Gibt es eine Möglichkeit zu haben, meine Kuchen und Essen es auch?

Hier ist eine minimale nicht-kompilieren Reproduktion:

fn return_str<'a>() -> &'a str {
    let mut string = "".to_string();

    for i in 0..10 {
        string.push_str("ACTG");
    }

    &string[..]
}
Andere Fragen, die haben das gleiche problem, und die Antwort ist immer noch die gleiche: es ist nicht möglich, erstellen Sie eine String in eine Funktion und schicken Sie es als ein &str wegen Rost-Speicher-Modell.
Ihre Argumentation für die nicht wollen, um wieder eine String macht für mich keinen Sinn. Speichern nur eine String in dieser "statische" Objekt, das anstelle eines &str. Es ist einfacher, es ist mindestens so ergonomisch ist, macht es mehr Sinn, Besitz-Weise, und es ist nicht einmal jeder performance-Vorteil.
Sie eigentlich schon etwas anderes, ich wurde gefragt, ob mit String hat irgendwelche performance-Nachteile. Ich sollte in der Lage umgestalten zu verwenden Strings
Manche finden diesen Artikel hilfreich: Strategien für die Rückgabe von Referenzen in Rost.

InformationsquelleAutor anderspitman | 2015-04-03

Schreibe einen Kommentar