Drop
Zweifacher Drop-Aufruf
Abschnitt betitelt „Zweifacher Drop-Aufruf“struct Example(i32);impl Drop for Example { fn drop(&mut self) { self.0 += 1; println!("drop {}", self.0); }}fn main() { let e = Example(0); drop(e); drop(e);}Ein Wert, dessen Eigentümer Sie sind, kann nicht zweimal freigegeben werden. Daher führt der zweite Aufruf von drop zu einem Compilerfehler.
Explizites Freigeben von Werten
Abschnitt betitelt „Explizites Freigeben von Werten“Betrachten Sie diesen Code-Schnipsel, der einen String allokiert:
fn main() { let mut s = String::new(); ____}Welche der folgenden Operationen sind gültig, um die Unterstreichung zu ersetzen, und würden dazu führen, dass s freigegeben wird?
Jede Verwendung von s, die den Wert verschiebt (moves) und das Ergebnis verwirft, führt dazu, dass s freigegeben wird. Die Methode s.drop() kann jedoch nicht direkt aufgerufen werden.