// Package maps defines various functions useful with maps of any type.
package maps
-import "unsafe"
-
-// keys is implemented in the runtime package.
-//
-//go:noescape
-func keys(m any, slice unsafe.Pointer)
-
-// Keys returns the keys of the map m.
-// The keys will be in an indeterminate order.
-func Keys[M ~map[K]V, K comparable, V any](m M) []K {
- r := make([]K, 0, len(m))
- keys(m, unsafe.Pointer(&r))
- return r
-}
-
-// values is implemented in the runtime package.
-//
-//go:noescape
-func values(m any, slice unsafe.Pointer)
-
-// Values returns the values of the map m.
-// The values will be in an indeterminate order.
-func Values[M ~map[K]V, K comparable, V any](m M) []V {
- r := make([]V, 0, len(m))
- values(m, unsafe.Pointer(&r))
- return r
-}
-
// Equal reports whether two maps contain the same key/value pairs.
// Values are compared using ==.
func Equal[M1, M2 ~map[K]V, K, V comparable](m1 M1, m2 M2) bool {