El Trait Drop
Los valores que implementan Drop pueden especificar el código que se ejecutará cuando salgan del ámbito:
struct Droppable { name: &'static str, } impl Drop for Droppable { fn drop(&mut self) { println!("Dropping {}", self.name); } } fn main() { let a = Droppable { name: "a" }; { let b = Droppable { name: "b" }; { let c = Droppable { name: "c" }; let d = Droppable { name: "d" }; println!("Exiting block B"); } println!("Exiting block A"); } drop(a); println!("Exiting main"); }
Cuestiones de debate:
- ¿Por qué 
Drop::dropno aceptaself?- Respuesta corta: si lo hiciera, se llamaría a 
std::mem::dropal final del bloque, lo que daría como resultado otra llamada aDrop::dropy un desbordamiento de la stack. 
 - Respuesta corta: si lo hiciera, se llamaría a 
 - Prueba a sustituir 
drop(a)pora.drop().