Function iter_next_chunk_back_erased

pub(in ::array) fn iter_next_chunk_back_erased<T>(buffer: &mut [MaybeUninit<T>], iter: &mut impl DoubleEndedIterator<Item = T>) -> Result<(), usize>

Version of iter_next_chunk_back using a passed-in slice in order to avoid needing to monomorphize for every array length.

Unfortunately this loop has two exit conditions, the buffer filling up or the iterator running out of items, making it tend to optimize poorly.