mirror of
https://codeberg.org/kaasboteram/zig-iterating.git
synced 2025-12-15 09:43:14 +01:00
Make Iterator adapters wrap Self instead of Inner
This commit is contained in:
parent
9bb6c03127
commit
a9aaf6fd61
1 changed files with 14 additions and 17 deletions
31
src/root.zig
31
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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue