type FixedVec { len: usize = 0, items: [N]T, fn init(items: [N]T) -> Self { return FixedVec { items: items } } fn push(self: mutref, value: T) -> Void raises [Full] { if self.len == N { raise Full } self.items[self.len] = value self.len = self.len + 1 } fn get(self: ref, index: usize) -> Maybe { return std.mem.get(self.items, index) } fn count(self: ref) -> usize { return self.len } } pub fn main(world: World) -> Void raises { var vec: FixedVec = FixedVec.init([0, 0, 0, 0]) check vec.push(10) check vec.push(20) let first: Maybe = vec.get(0) let missing: Maybe = vec.get(9) if first.has && first.value == 10 && !missing.has && vec.count() == 2 { check world.out.write("fixed vec ok\n") } }