iterator: reuse iter::to_vec, and use &mut self