From a9aaf6fd61416ec42491db27edff40ae22db8138 Mon Sep 17 00:00:00 2001 From: Luuk Machielse Date: Tue, 9 Dec 2025 19:07:39 +0100 Subject: [PATCH] Make `Iterator` adapters wrap `Self` instead of `Inner` --- src/root.zig | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/src/root.zig b/src/root.zig index 976356e..8d15242 100644 --- a/src/root.zig +++ b/src/root.zig @@ -106,34 +106,31 @@ pub fn Iterator(comptime Inner: type) type { self: Self, comptime T: type, f: fn (Item) T, - ) Iterator(adapters.Map(Inner, T, f)) { - return .{ .inner = .{ .inner = self.inner } }; + ) Iterator(adapters.Map(Self, T, f)) { + return .{ .inner = .{ .inner = self } }; } - pub fn filter(self: Self, predicate: fn (Item) bool) Iterator(adapters.Filter( - Inner, - predicate, - )) { - return .{ .inner = .{ .inner = self.inner } }; + pub fn filter(self: Self, predicate: fn (Item) bool) Iterator(adapters.Filter(Self, predicate)) { + return .{ .inner = .{ .inner = self } }; } pub fn filterMap( self: Self, comptime T: type, f: anytype, - ) Iterator(adapters.FilterMap(Inner, T, f)) { - return .{ .inner = .{ .inner = self.inner } }; + ) Iterator(adapters.FilterMap(Self, T, f)) { + return .{ .inner = .{ .inner = self } }; } pub fn take( self: Self, n: usize, - ) Iterator(adapters.Take(Inner)) { - return .{ .inner = .{ .inner = self.inner, .n = n } }; + ) Iterator(adapters.Take(Self)) { + return .{ .inner = .{ .inner = self, .n = n } }; } - pub fn enumerate(self: Self) Iterator(adapters.Enumerate(Inner)) { - return .{ .inner = .{ .inner = self.inner } }; + pub fn enumerate(self: Self) Iterator(adapters.Enumerate(Self)) { + return .{ .inner = .{ .inner = self } }; } pub fn fold(self: Self, comptime T: type, init: T, f: anytype) T { @@ -179,12 +176,12 @@ pub fn Iterator(comptime Inner: type) type { }.some); } - pub fn chain(self: Self, other: anytype) Iterator(adapters.Chain(Inner, @TypeOf(other.inner))) { - return .{ .inner = .{ .first = self.inner, .second = other.inner } }; + pub fn chain(self: Self, other: anytype) Iterator(adapters.Chain(Self, @TypeOf(other))) { + return .{ .inner = .{ .first = self, .second = other } }; } - pub fn zip(self: Self, other: anytype) Iterator(adapters.Zip(Inner, @TypeOf(other.inner))) { - return .{ .inner = .{ .a = self.inner, .b = other.inner } }; + pub fn zip(self: Self, other: anytype) Iterator(adapters.Zip(Self, @TypeOf(other))) { + return .{ .inner = .{ .a = self, .b = other } }; } test zip {