Using the Drop Trait does not mean that it will be run every time. While it will run when going out of scope or unwinding, it might not not always be the case, for example when
mem::forget is called.
This is because a panic while unwinding causes the program to abort. It also might have been compiled with
Abort on Panic switched on.
For more information check out the book: https://doc.rust-lang.org/book/drop.html