package generics // MapPairs returns list of map's key-value pairs. func MapPairs[K comparable, V any](src map[K]V) Pairs[K, V] { dst := make([]Pair[K, V], len(src)) idx := 0 for k, v := range src { dst[idx] = Pair[K, V]{ Key: k, Value: v, } idx++ } return dst } // MapKeys returns list of map's keys. func MapKeys[K comparable, V any](src map[K]V) []K { dst := make([]K, len(src)) idx := 0 for k := range src { dst[idx] = k idx++ } return dst } // MapValues returns list of map's values. func MapValues[K comparable, V any](src map[K]V) []V { dst := make([]V, len(src)) idx := 0 for _, v := range src { dst[idx] = v idx++ } return dst } // InvertMap returns map with keys and values swapped. func InvertMap[K, V comparable](src map[K]V) map[V]K { if src == nil { return nil } dst := make(map[V]K, len(src)) for k, v := range src { dst[v] = k } return dst }