@@ -12,6 +12,9 @@ import (
1212//
1313// See the package documentation for more information on non-blocking unordered functions and error handling.
1414func Map [A , B any ](in <- chan Try [A ], n int , f func (A ) (B , error )) <- chan Try [B ] {
15+ validateN (n )
16+ validateNilFunc (f == nil )
17+
1518 return core .FilterMap (in , n , func (a Try [A ]) (Try [B ], bool ) {
1619 if a .Error != nil {
1720 return Try [B ]{Error : a .Error }, true
@@ -28,6 +31,9 @@ func Map[A, B any](in <-chan Try[A], n int, f func(A) (B, error)) <-chan Try[B]
2831
2932// OrderedMap is the ordered version of [Map].
3033func OrderedMap [A , B any ](in <- chan Try [A ], n int , f func (A ) (B , error )) <- chan Try [B ] {
34+ validateN (n )
35+ validateNilFunc (f == nil )
36+
3137 return core .OrderedFilterMap (in , n , func (a Try [A ]) (Try [B ], bool ) {
3238 if a .Error != nil {
3339 return Try [B ]{Error : a .Error }, true
@@ -50,6 +56,9 @@ func OrderedMap[A, B any](in <-chan Try[A], n int, f func(A) (B, error)) <-chan
5056//
5157// See the package documentation for more information on non-blocking unordered functions and error handling.
5258func Filter [A any ](in <- chan Try [A ], n int , f func (A ) (bool , error )) <- chan Try [A ] {
59+ validateN (n )
60+ validateNilFunc (f == nil )
61+
5362 return core .FilterMap (in , n , func (a Try [A ]) (Try [A ], bool ) {
5463 if a .Error != nil {
5564 return a , true // never filter out errors
@@ -66,6 +75,9 @@ func Filter[A any](in <-chan Try[A], n int, f func(A) (bool, error)) <-chan Try[
6675
6776// OrderedFilter is the ordered version of [Filter].
6877func OrderedFilter [A any ](in <- chan Try [A ], n int , f func (A ) (bool , error )) <- chan Try [A ] {
78+ validateN (n )
79+ validateNilFunc (f == nil )
80+
6981 return core .OrderedFilterMap (in , n , func (a Try [A ]) (Try [A ], bool ) {
7082 if a .Error != nil {
7183 return a , true // never filter out errors
@@ -89,6 +101,9 @@ func OrderedFilter[A any](in <-chan Try[A], n int, f func(A) (bool, error)) <-ch
89101//
90102// See the package documentation for more information on non-blocking unordered functions and error handling.
91103func FilterMap [A , B any ](in <- chan Try [A ], n int , f func (A ) (B , bool , error )) <- chan Try [B ] {
104+ validateN (n )
105+ validateNilFunc (f == nil )
106+
92107 return core .FilterMap (in , n , func (a Try [A ]) (Try [B ], bool ) {
93108 if a .Error != nil {
94109 return Try [B ]{Error : a .Error }, true
@@ -105,6 +120,9 @@ func FilterMap[A, B any](in <-chan Try[A], n int, f func(A) (B, bool, error)) <-
105120
106121// OrderedFilterMap is the ordered version of [FilterMap].
107122func OrderedFilterMap [A , B any ](in <- chan Try [A ], n int , f func (A ) (B , bool , error )) <- chan Try [B ] {
123+ validateN (n )
124+ validateNilFunc (f == nil )
125+
108126 return core .OrderedFilterMap (in , n , func (a Try [A ]) (Try [B ], bool ) {
109127 if a .Error != nil {
110128 return Try [B ]{Error : a .Error }, true
@@ -127,6 +145,9 @@ func OrderedFilterMap[A, B any](in <-chan Try[A], n int, f func(A) (B, bool, err
127145//
128146// See the package documentation for more information on non-blocking unordered functions and error handling.
129147func FlatMap [A , B any ](in <- chan Try [A ], n int , f func (A ) <- chan Try [B ]) <- chan Try [B ] {
148+ validateN (n )
149+ validateNilFunc (f == nil )
150+
130151 if in == nil {
131152 return nil
132153 }
@@ -150,6 +171,9 @@ func FlatMap[A, B any](in <-chan Try[A], n int, f func(A) <-chan Try[B]) <-chan
150171
151172// OrderedFlatMap is the ordered version of [FlatMap].
152173func OrderedFlatMap [A , B any ](in <- chan Try [A ], n int , f func (A ) <- chan Try [B ]) <- chan Try [B ] {
174+ validateN (n )
175+ validateNilFunc (f == nil )
176+
153177 if in == nil {
154178 return nil
155179 }
@@ -185,6 +209,9 @@ func OrderedFlatMap[A, B any](in <-chan Try[A], n int, f func(A) <-chan Try[B])
185209//
186210// See the package documentation for more information on non-blocking unordered functions and error handling.
187211func Catch [A any ](in <- chan Try [A ], n int , f func (error ) error ) <- chan Try [A ] {
212+ validateN (n )
213+ validateNilFunc (f == nil )
214+
188215 return core .FilterMap (in , n , func (a Try [A ]) (Try [A ], bool ) {
189216 if a .Error == nil {
190217 return a , true
@@ -201,6 +228,9 @@ func Catch[A any](in <-chan Try[A], n int, f func(error) error) <-chan Try[A] {
201228
202229// OrderedCatch is the ordered version of [Catch].
203230func OrderedCatch [A any ](in <- chan Try [A ], n int , f func (error ) error ) <- chan Try [A ] {
231+ validateN (n )
232+ validateNilFunc (f == nil )
233+
204234 return core .OrderedFilterMap (in , n , func (a Try [A ]) (Try [A ], bool ) {
205235 if a .Error == nil {
206236 return a , true
0 commit comments