1 package linodego
2 3 import (
4 "iter"
5 "slices"
6 )
7 8 // mapIter returns a new iterator of the values in the given iterator transformed using the given transform function.
9 func mapIter[I, O any](values iter.Seq[I], transform func(I) O) iter.Seq[O] {
10 return func(yield func(O) bool) {
11 for value := range values {
12 if !yield(transform(value)) {
13 return
14 }
15 }
16 }
17 }
18 19 // mapSlice returns a new slice of the values in the given slice transformed using the given transform function.
20 func mapSlice[I, O any](values []I, transform func(I) O) []O {
21 return slices.Collect(mapIter(slices.Values(values), transform))
22 }
23