fehlender Lebensdauerspezifizierer [E0106] für die Funktionssignatur

8

Ich bin ziemlich verwirrt wegen der Fehler dieses einfachen Codes ( Spielplatz ):

%Vor%

Dies sind:

%Vor%

Ich bin nicht mit diesen Fehlern konfrontiert worden, hat sich irgendetwas in einer neuen Rust-Version geändert? Wie kann ich die Fehler beheben?

    
アレックス 24.11.2014, 04:06
quelle

1 Antwort

14

Vor langer Zeit, als eine Funktion einen ausgeliehenen Zeiger zurückgegeben hat, hat der Compiler die Eigenschaft 'static lifetime abgeleitet, so dass fn2 erfolgreich kompiliert wurde. Seither wurde das Lifetime Elision implementiert. Lifetime Elision ist ein Prozess, bei dem der Compiler die Lebensdauer eines Eingabeparameters automatisch mit der Lebensdauer des Ausgabewerts verknüpft, ohne ihn explizit benennen zu müssen.

Zum Beispiel wäre fn1 ohne lebenslange Elision wie folgt geschrieben:

%Vor%

fn2 hat jedoch keine Parameter, die ausgeliehene Zeiger oder Strukturen mit Lebensdauerparametern sind (tatsächlich hat es überhaupt keine Parameter). Sie müssen daher die Lebensdauer explizit angeben. Da Sie ein Zeichenfolgenliteral zurückgeben, ist die korrekte Lebensdauer 'static (wie vom Compiler vorgeschlagen).

%Vor%     
Francis Gagné 24.11.2014, 04:44
quelle

Tags und Links