E0373E0373 — Closure kann erfasste Variable überleben
Eine Closure erfasst eine Referenz auf eine Variable, die möglicherweise nicht lange genug lebt.
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.
Verwandte Fehlercodes
E0308E0308 — Typen stimmen nicht überein
Der erwartete Typ stimmt nicht mit dem tatsächlich angegebenen Typ überein.
E0658E0658 — Instabiles Feature verwendet
Ein noch nicht stabilisiertes Rust-Feature wird ohne Feature-Gate verwendet.
E0317E0317 — if-Ausdruck fehlt möglicherweise ein else-Zweig
Ein als Wert verwendeter if-Ausdruck hat keinen else-Zweig.
E0119E0119 — Konflikthafte Trait-Implementierungen
Für denselben Typ existieren zwei oder mehr Implementierungen desselben Traits.
E0277E0277 — Trait nicht erfüllt
Ein Typ implementiert ein erforderliches Trait nicht.
E0425E0425 — Wert in diesem Gültigkeitsbereich nicht gefunden
Ein Bezeichner wird verwendet, ist aber im aktuellen Gültigkeitsbereich nicht definiert.