vec::MoveIterator is written in such a way to be safe for dtors, but this is unnecessary overhead for POD types. Because vec is such an important type, it's worth optimizing for this case. I think all we need is to make use of std::libstd::needs_drop(), but I'm not completely sure if that's all that is needed.