// Copyright 2024 Matthew Rich . All rights reserved. package mapper type Store[Key comparable, Value any] map[Key]Value func (m Store[Key, Value]) Get(key Key) (Value, bool) { v, ok := m[key] return v, ok } func (m Store[Key, Value]) Has(key Key) (ok bool) { _, ok = m[key] return } func (m Store[Key, Value]) Set(key Key, value Value) { m[key] = value } func (m Store[Key, Value]) Delete(key Key) { delete(m, key) } type Mapper interface { Get(key string) (any, bool) Has(key string) (bool) Set(key string, value any) Delete(key string) } type Getter[Key comparable, Value comparable] interface { Get(key Key) (Value, bool) Has(key Key) (bool) } type Map[Key comparable, Value comparable] interface { Get(key Key) (Value, bool) Has(key Key) (bool) Set(key Key, value Value) Delete(key Key) } func New[Key comparable, Value comparable]() Store[Key, Value] { return make(Store[Key, Value]) } func NewString[Value comparable]() Store[string, Value] { return make(Store[string, Value]) }