This is not how `unsafe_no_drop_flag` works. It will cause the destructor to be run multiple times *on different addresses* due to moves. It causes a move to zero the entire value, so the check needs to be at the start of the destructor.