Z4YYQXEE4OQPF22I4LD7RVQIBKK67AHCYR6C35MANUCIC4P3EPYQC
let error = ptr::read(error);
drop(ptr::read(&self.inner));
mem::forget(self);
let error = ptr::read(&outer.inner.error as *const () as *const E);
let inner = ptr::read(&outer.inner);
let erased = ManuallyDrop::into_inner(inner);
(erased.vtable.object_drop_front)(erased);
drop(unerased);
}
unsafe fn object_drop_front<E>(e: Box<ErrorImpl<()>>) {
// Drop the fields of ErrorImpl other than E as well as the Box allocation,
// without dropping E itself. This is used by downcast after doing a
// ptr::read to take ownership of the E.
let unerased = mem::transmute::<Box<ErrorImpl<()>>, Box<ErrorImpl<ManuallyDrop<E>>>>(e);