Drop
Drop, позволяет регулировать, что происходит, когда значение вот-вот выйдет из области видимости. Вы можете реализовать типаж Drop для любого типа, а также использовать этот код для высвобождения ресурсов, таких как файлы или сетевые соединения.
Типаж
Dropтребует от вас реализации одного метода drop, который принимает изменяемую ссылку наself.
#![allow(unused)] fn main() { struct CustomSmartPointer { data: String, } impl Drop for CustomSmartPointer { fn drop(&mut self) { println!("Dropping CustomSmartPointer with data `{}`!", self.data); } } }
Раннее удаление значения с помощью std::mem::drop
Rustне позволяет вызвать метод типажа Drop вручную; вместо этого вы должны вызвать функциюstd::mem::dropпредоставляемую стандартной библиотекой, если хотите принудительно удалить значение до конца области видимости.
use std::mem::drop fn main() { let c = CustomSmartPointer { data: String::from("some data"), }; println!("CustomSmartPointer created"); drop(c); println!("CustomSmartPointer dropped before the end of main"); }