1 type OneMany<T> = 2 | One T 3 | Many List<T> 4 5 fun get (i : u32) = case self of 6 One x -> assert i == 0 7 x 8 Many list -> list[i] 9 10 fun get (i : i32) = 11 assert i >= 0 12 self[i as u32] 13 14 def as_slice = case self of 15 One x@ptr -> Slice<T> x 1 16 Many list -> list.as_slice 17 18 def get_iterator = as_slice.get_iterator 19 20 def size = case self of 21 One _ -> 1 22 Many list -> list.size 23