Make Iterator adapters wrap Self instead of Inner

This commit is contained in:
Luuk Machielse 2025-12-09 19:07:39 +01:00
parent 9bb6c03127
commit a9aaf6fd61

View file

@ -106,34 +106,31 @@ pub fn Iterator(comptime Inner: type) type {
self: Self, self: Self,
comptime T: type, comptime T: type,
f: fn (Item) T, f: fn (Item) T,
) Iterator(adapters.Map(Inner, T, f)) { ) Iterator(adapters.Map(Self, T, f)) {
return .{ .inner = .{ .inner = self.inner } }; return .{ .inner = .{ .inner = self } };
} }
pub fn filter(self: Self, predicate: fn (Item) bool) Iterator(adapters.Filter( pub fn filter(self: Self, predicate: fn (Item) bool) Iterator(adapters.Filter(Self, predicate)) {
Inner, return .{ .inner = .{ .inner = self } };
predicate,
)) {
return .{ .inner = .{ .inner = self.inner } };
} }
pub fn filterMap( pub fn filterMap(
self: Self, self: Self,
comptime T: type, comptime T: type,
f: anytype, f: anytype,
) Iterator(adapters.FilterMap(Inner, T, f)) { ) Iterator(adapters.FilterMap(Self, T, f)) {
return .{ .inner = .{ .inner = self.inner } }; return .{ .inner = .{ .inner = self } };
} }
pub fn take( pub fn take(
self: Self, self: Self,
n: usize, n: usize,
) Iterator(adapters.Take(Inner)) { ) Iterator(adapters.Take(Self)) {
return .{ .inner = .{ .inner = self.inner, .n = n } }; return .{ .inner = .{ .inner = self, .n = n } };
} }
pub fn enumerate(self: Self) Iterator(adapters.Enumerate(Inner)) { pub fn enumerate(self: Self) Iterator(adapters.Enumerate(Self)) {
return .{ .inner = .{ .inner = self.inner } }; return .{ .inner = .{ .inner = self } };
} }
pub fn fold(self: Self, comptime T: type, init: T, f: anytype) T { 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); }.some);
} }
pub fn chain(self: Self, other: anytype) Iterator(adapters.Chain(Inner, @TypeOf(other.inner))) { pub fn chain(self: Self, other: anytype) Iterator(adapters.Chain(Self, @TypeOf(other))) {
return .{ .inner = .{ .first = self.inner, .second = other.inner } }; return .{ .inner = .{ .first = self, .second = other } };
} }
pub fn zip(self: Self, other: anytype) Iterator(adapters.Zip(Inner, @TypeOf(other.inner))) { pub fn zip(self: Self, other: anytype) Iterator(adapters.Zip(Self, @TypeOf(other))) {
return .{ .inner = .{ .a = self.inner, .b = other.inner } }; return .{ .inner = .{ .a = self, .b = other } };
} }
test zip { test zip {