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,
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 {