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 def is_empty = size == 0 21 def is_not_empty = size <> 0 22 23 def take (x : u32) = 24 assert x <= size 25 Slice ptr x 26 27 def drop self (x : u32) = 28 assert x <= self.size 29 let ptr = self.ptr + x 30 Slice ptr (self.size - x) 31 32 type [T; N] 33 def get_iterator = as_slice.get_iterator 34