pub trait VecIterator: Iterator {
// Required methods
fn set_position_to(&mut self, i: usize);
fn set_end_to(&mut self, i: usize);
// Provided methods
fn get_at(&mut self, i: usize) -> Option<Self::Item> { ... }
fn get_unwrap_at(&mut self, i: usize) -> Self::Item { ... }
}