package utils

import "sort"

type Pair[K comparable, V any] struct {
	Key   K
	Value V
}

func SortMap[K comparable, V any](m map[K]V, less func(i, j Pair[K, V]) bool) []Pair[K, V] {
	pairs := make([]Pair[K, V], 0, len(m))
	for k, v := range m {
		pairs = append(pairs, Pair[K, V]{k, v})
	}
	sort.Slice(pairs, func(i, j int) bool {
		return less(pairs[i], pairs[j])
	})
	return pairs
}