helpers_iterator.go raw

   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