1 type [T; N] 2 def as_ptr = self as Ptr<T> 3 def as_mut_ptr @mut = self as MutPtr<T> 4 5 def as_slice = Slice<T> as_ptr N 6 def as_mut_slice @mut = MutSlice<T> as_mut_ptr N 7 8 def size = N 9 10 fun get (i : u32) : T 11 fun get_ptr (i : u32) = as_ptr + i 12 fun get_mut_ptr @mut (i : u32) = as_mut_ptr + i 13 fun set @mut (i : u32) (value : T) 14 15 def set_all @mut (value : T) = 16 for i = 0 until size do 17 self[i] = value 18 19 def (==) rhs = 20 for i = 0 until N do 21 if self[i] <> rhs[i] then return false 22 23 true 24 25 def map<U> (f : T -> U) = 26 let mut array = [U; N]@zero 27 for i = 0 until size do 28 array[i] = f self[i] 29 30 array 31