Zum Inhalt springen
Rust-Compiler-FehlerFehler
E0373

E0373 — Closure kann erfasste Variable überleben

Eine Closure erfasst eine Referenz auf eine Variable, die möglicherweise nicht lange genug lebt.

rustcargo

Was verursacht diesen Fehler

Die Closure leiht sich eine lokale Variable, könnte aber den Gültigkeitsbereich dieser Variable überdauern. Dieses Problem tritt häufig auf, wenn Closures an Threads übergeben oder in Structs gespeichert werden.

So beheben Sie ihn

Verwende das Schlüsselwort move, um den Besitz zu übertragen: move || { ... }. Clone die Variable vor der Closure, wenn das Original weiterhin benötigt wird. Stelle sicher, dass die erfassten Daten für die gesamte Lebensdauer der Closure gültig bleiben.

Offizielle Dokumentation

Verwandte Fehlercodes