Es versteht sich, dass wenn eine Variable, deren Typ Drop
implementiert außerhalb Geltungsbereich, einen Aufruf an die fn drop(&mut self)
Funktion eingefügt wird, und übergeben eine neu erstellte veränderbare Verweis auf die Variable außerhalb des Bereichs.Wie wird ein Destruktoraufruf `fn drop (& mut self)` aufgerufen, wenn die besitzende Variable unveränderlich ist?
Wie ist das möglich in Fällen, in denen die Variable untrennbar gebunden war und es illegal wäre, sie variabel zu borgen? Hier ist ein Beispiel dafür, was ich spreche:
fn main() {
let x = vec![1, 2, 3];
let y = &mut x;
}
Welche die folgenden Fehler erzeugt: nicht unveränderlich lokalen Variable x
wie wandelbar wie erwartet leihen.
Etwas ähnliches muss passieren, wenn x
fallen gelassen würde, weil drop
eine veränderbare Referenz erwartet.
Man könnte sagen, dass der Wert * in das Argument 'drop' * verschoben wurde. Genau wie du 'x' in' z' verschieben kannst, kannst du es in 'drop' verschieben ...? –
@KerrekSB mit der Ausnahme, dass drop seinen Empfänger * durch Referenz * not * nach Wert * nimmt, also wird nichts in 'Drop :: drop' verschoben. – Shepmaster
Hm, es ist eher so, als wäre es in einen privaten Destruktionsort umgezogen, von wo 'Drop' genannt wird. –