| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package generics
- import "golang.org/x/exp/constraints"
- // Deprecated: Use MakeMapIfNil and MapInsert separately.
- func MakeMapIfNilAndSet[K comparable, V any](pm *map[K]V, k K, v V) (added bool) {
- MakeMapIfNil(pm)
- m := *pm
- _, exists := m[k]
- added = !exists
- m[k] = v
- return
- }
- // Does this exist in the maps package?
- func MakeMap[K comparable, V any, M ~map[K]V](pm *M) {
- *pm = make(M)
- }
- func MakeMapWithCap[K comparable, V any, M ~map[K]V, C constraints.Integer](pm *M, cap C) {
- *pm = make(M, cap)
- }
- func MakeMapIfNil[K comparable, V any, M ~map[K]V](pm *M) {
- if *pm == nil {
- MakeMap(pm)
- }
- }
- func MapContains[K comparable, V any, M ~map[K]V](m M, k K) bool {
- _, ok := m[k]
- return ok
- }
- func MapMustGet[K comparable, V any, M ~map[K]V](m M, k K) V {
- v, ok := m[k]
- if !ok {
- panic(k)
- }
- return v
- }
- func MapInsert[K comparable, V any, M ~map[K]V](m M, k K, v V) Option[V] {
- old, ok := m[k]
- m[k] = v
- return Option[V]{
- Value: old,
- Ok: ok,
- }
- }
|