1 type SliceIterator<T> = 2 inherit Iterator<T> 3 4 let slice : Slice<T> 5 let mut index = -1 6 7 def Iterator.move_next = 8 index += 1 9 index < slice.size 10 11 def Iterator.get_value = 12 slice[index] 13 14 type Slice<T> 15 def try_size = Some size |> as_option 16 def get_iterator = SliceIterator<T> self 17 18 is Iterable<T> 19 20 type Slice<T> 21 def take (x : u32) = 22 assert x <= size 23 Slice ptr x 24 25 def drop self (x : u32) = 26 assert x <= self.size 27 let ptr = self.ptr + x 28 Slice ptr (self.size - x) 29 30 type [T; N] 31 def get_iterator = as_slice.get_iterator 32