1 type ListIterator<T> = 2 inherit Iterator<T> 3 4 let list : List<T> 5 let version = list.version 6 let mut index = -1 7 8 def Iterator.move_next = 9 assert list.version == version 10 index += 1 11 index < list.size 12 13 def Iterator.get_value = 14 assert list.version == version 15 list[index] 16 17 type List<T> 18 def try_size = Some size |> as_option 19 def get_iterator = ListIterator<T> self 20 21 is Iterable<T> 22