The Post Increment can be turned into Post Decrement, which is really handy for peak
on iterators:
fn peak(self: *Iterator) ?Item {
defer self.i -= 1;
self.i += 1;
if (self.i >= self.items.len) return null;
return self.items[self.i];
}