1 type MapIterator<K, V> = 2 inherit Iterator<(K, V)> 3 4 let map : Map<K, V> 5 let version = map.version 6 let mut index = -1 7 let mut is_started = false 8 9 def Iterator.move_next = 10 assert map.version == version 11 if not is_started then 12 index = map.first 13 is_started = true 14 else if index <> -1 then 15 index = map.array[index].next 16 17 index <> -1 18 19 def Iterator.get_value = 20 map.version == version 21 let entry = map.array[index] 22 (entry.key, entry.value) 23 24 type Map<K, V> 25 def try_size = Some size |> as_option 26 def get_iterator = MapIterator<K, V> self 27 28 is Iterable<(K, V)> 29