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