Ist es in Rust möglich, einen Kontext für das Verfallen eines Objekts explizit anzugeben? Zum Beispiel einer Grafik Manipulation Code vorstellen, dass so etwas wie dies funktioniert:Objekt ablaufen lassen bei einer Statusänderung in Rust
// borrow an edge from the graph
let edge : &Edge = graph.findEdge(...);
// modify the edge
let new_edge : &Edge = graph.splitEdge(edge, vertex);
// the old edge is invalid now, this should be an compiler error now!
edge.something
Im Allgemeinen ist es eine Möglichkeit, eine Lebensdauer eines Objekts in einem Zustand oder eine Zustandsänderung zu verbinden?
Ich verstehe nicht ganz, warum der Fehler E0502 an erster Stelle auftritt. Sicher, ich leihe 'Grafik' für den Aufruf der Methode find_edge(), aber die Funktion gibt zurück, bevor split_edge() aufgerufen wird, sollte also nicht die ausgeliehene Referenz bis dahin ablaufen? Wie soll ich vorgehen, wenn ich wirklich möchte, dass die Kante ungültig gemacht wird und nicht nur die Variable wiederverwendet wird? – MrMobster
Wenn Sie 'let edge: & Edge = graph.findEdge (...);' aufrufen, wird 'edge' aus' graph' entlehnt, bis sie ('edge') den Gültigkeitsbereich verlässt. In meinem Beispiel ist das bis zum Ende von 'main()'. Es ist schwierig für mich, Ihre genauen Anforderungen zu verstehen, daher kann ich nicht sagen, was Sie ändern müssen. Aber es scheint mir seltsam, dass Sie das Ergebnis von 'find_edge' an' split_edge' übergeben. Können Sie zum Beispiel nicht die Parameter 'find_edge' zu' split_edge' hinzufügen? Vielleicht kombiniert mit einem zusätzlichen Block, um die Lebensdauer von 'Edge' zu begrenzen? – wimh
Semantisch sollte das Aufteilen einer Kante in einem Diagramm (unabhängig davon, ob es gerichtet ist oder nicht) entweder diese Kante vollständig ungültig machen oder die gegebene Kante ändern, während eine neue Kante erstellt wird. Ich vermute, es liegt an OP, welches Verhalten gewählt wird. –