Zig defer Patterns

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];
}