Must destroy is used to create a paramterized destructor for a type that must be explicitly called.
MustDestroy<T> acts as a guard for a wrapped type that implements the
trait, that causes a
panic if the guard is dropped.
However, calling destroy upon the guard, will call destroy on wrapped child, and will be consumed safely.
The value contained is an item that can't be dropped and must be
destroyed via calling it's
Trait applied to items that can be destroyed.