convert.go

v0.1.0
Doc Versions Source
1
package collect
2
3
// ConvertList transforms a [ListIterator] of type I into a [ListIterator]
4
// of type O by applying cb to each element.
5
func ConvertList[I any, O any](inp ListIterator[I], cb func(I) O) ListIterator[O] {
6
	src := inp.(*listIterator[I])
7
	gen := src.generator
8
	maxElems := src.maxElements
9
	if maxElems < 0 {
10
		maxElems = -1
11
	}
12
	return &listIterator[O]{
13
		generator: func() (O, bool) {
14
			v, ok := gen()
15
			if !ok {
16
				var zero O
17
				return zero, false
18
			}
19
			return cb(v), true
20
		},
21
		maxElements: maxElems,
22
	}
23
}
24

Source Files