Skip to content

Commit e4638e3

Browse files
Add .Exclude for iterator method chaining
1 parent d10f351 commit e4638e3

File tree

3 files changed

+24
-0
lines changed

3 files changed

+24
-0
lines changed

iter/filter_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,18 @@ func ExampleExclude() {
6464
// None
6565
}
6666

67+
func ExampleExclude_method() {
68+
filtered := iter.Lift([]int{0, 1, 0, 2}).Exclude(filters.IsZero[int])
69+
fmt.Println(filtered.Next())
70+
fmt.Println(filtered.Next())
71+
fmt.Println(filtered.Next())
72+
73+
// Output:
74+
// Some(1)
75+
// Some(2)
76+
// None
77+
}
78+
6779
func TestFilter(t *testing.T) {
6880
evens := iter.Filter[int](iter.Count(), filters.IsEven[int])
6981
assert.Equal(t, evens.Next().Unwrap(), 0)

iter/iter.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,3 +154,9 @@ func (iter *BaseIter[T]) Enumerate() *EnumerateIter[T] {
154154
func (iter *BaseIter[T]) Transform(op func(T) T) *MapIter[T, T] {
155155
return Transform[T](iter, op)
156156
}
157+
158+
// Exclude is a convenience method for [Exclude], providing this iterator
159+
// as an argument.
160+
func (iter *BaseIter[T]) Exclude(fun func(T) bool) *FilterIter[T] {
161+
return Exclude[T](iter, fun)
162+
}

iter/iter_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,3 +217,9 @@ func TestBaseIteratorEnumerate(t *testing.T) {
217217
assert.Equal(t, iterator.Next(), option.Some(iter.Pair[uint, string]{1, "Friend"}))
218218
assert.True(t, iterator.Next().IsNone())
219219
}
220+
221+
func TestBaseIteratorExclude(t *testing.T) {
222+
evens := iter.Count().Exclude(filters.IsEven[int])
223+
assert.Equal(t, evens.Next().Unwrap(), 1)
224+
assert.Equal(t, evens.Next().Unwrap(), 3)
225+
}

0 commit comments

Comments
 (0)