Documentation
¶
Overview ¶
Package shardmap is a re-done version of Josh Baker's shardmap package. It switches out the hash from xxhash to maphash, uses generics and has a few other minor changes. It is a thread-safe. Based on Josh Baker's shardmap.
Index ¶
- type Map
- func (m *Map[K, V]) CleanShards()
- func (m *Map[K, V]) Clear()
- func (m *Map[K, V]) Delete(key K) (prev *V, deleted bool)
- func (m *Map[K, V]) DeleteIfNil(key K) (prev *V, deleted bool)
- func (m *Map[K, V]) Get(key K) (value *V, ok bool)
- func (m *Map[K, V]) Len() int
- func (m *Map[K, V]) Set(key K, value *V) (prev *V, replaced bool)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Map ¶
type Map[K comparable, V any] struct { // IsEqual is a function that determines if two values are equal. This is not required unless using // CompareAndSwap or CompareAndDelete. IsEqual func(old, new V) bool // contains filtered or unexported fields }
Map is a hashmap. Like map[string]interface{}, but sharded and thread-safe.
func New ¶
func New[K comparable, V any](cap int) *Map[K, V]
New returns a new hashmap with the specified capacity. This function is only needed when you must define a minimum capacity, otherwise just use:
var m shardmap.Map
func (*Map[K, V]) CleanShards ¶
func (m *Map[K, V]) CleanShards()
CleanShards removes all entries with nil values from the map.
func (*Map[K, V]) Delete ¶
Delete deletes a value for a key. Returns the deleted value, or false when no value was assigned.
func (*Map[K, V]) DeleteIfNil ¶
DeleteIfNil deletes a value for a key only if the current value's weak pointer is nil.
func (*Map[K, V]) Get ¶
Get returns a value for a key. Returns false when no value has been assign for key.