diff --git a/src/lib.rs b/src/lib.rs index 97ecebf..8f659a9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -33,6 +33,13 @@ impl<'a, Trait: ?Sized + 'a> Dyn<'a, Trait> { } } +impl<'a, Trait: ?Sized + 'a> Drop for Dyn<'a, Trait> { + fn drop(&mut self) { + // SAFETY: `self` is valid for writing, and won't be accessed later. + unsafe { Self::ptr(self as *mut Self).drop_in_place() }; + } +} + impl<'a, Trait: ?Sized + 'a> ops::Deref for Dyn<'a, Trait> { type Target = Trait;