github.com/cilium/statedb@v0.3.2/index/seq.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package index 5 6 import "iter" 7 8 // Seq creates a KeySet from an iter.Seq[T] with the given indexing function. 9 // Example usage: 10 // 11 // var strings iter.Seq[string] 12 // keys := Seq[string](index.String, strings) 13 func Seq[T any]( 14 toKey func(T) Key, 15 seq iter.Seq[T], 16 ) KeySet { 17 keys := []Key{} 18 for v := range seq { 19 keys = append(keys, toKey(v)) 20 } 21 return NewKeySet(keys...) 22 } 23 24 // Seq2 creates a KeySet from an iter.Seq2[A,B] with the given indexing function. 25 // Example usage: 26 // 27 // var seq iter.Seq2[string, int] 28 // keys := Seq2(index.String, seq) 29 func Seq2[A, B any]( 30 toKey func(A) Key, 31 seq iter.Seq2[A, B], 32 ) KeySet { 33 keys := []Key{} 34 for a := range seq { 35 keys = append(keys, toKey(a)) 36 } 37 return NewKeySet(keys...) 38 }