I've been trying to learn how to create an `All() iter.Seq[T]` method for a simple set type (a map wrapper):
It won't work in the playground of course, but when I do:
`GOEXPERIMENT=rangefunc go run .`
using Go 1.22 I get this error:
```
cannot use func(yield func(int, T) bool) {…} (value of type
func(yield func(int, T) bool)) as iter.Seq[T] value in return statement
```
Can someone help me get this right please?
```
package main
import (
"cmp"
"fmt"
"iter"
)
func main() {
s := New(5, 10, 15, 20, 35)
for v := range s.All() {
fmt.Println(v)
}
}
type Set[T cmp.Ordered] map[T]struct{}
func New[T cmp.Ordered](elements ...T) Set[T] {
set := make(Set[T], len(elements))
for _, element := range elements {
set[element] = struct{}{}
}
return set
}
func (me Set[T]) All() iter.Seq[T] {
return func(yield func(int, T) bool) { // ERROR
n := 0
for key := range me {
if !yield(n, key) {
return
}
n++
}
}
}
```