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.
Index ¶
- type Map
- func (m *Map[K, V]) All() iter.Seq2[K, V]
- func (m *Map[K, V]) Clear()
- func (m *Map[K, V]) Delete(key K) (prev V, deleted bool)
- func (m *Map[K, V]) DeleteAccept(key K, accept func(prev V, replaced bool) bool) (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)
- func (m *Map[K, V]) SetAccept(key K, value V, accept func(prev V, replaced bool) bool) (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 { // 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]) All ¶
All returns a sequence of all key/values. It is not safe to call Set or Delete while iterating.
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]) DeleteAccept ¶
func (m *Map[K, V]) DeleteAccept(key K, accept func(prev V, replaced bool) bool) (prev V, deleted bool)
DeleteAccept deletes a value for a key. The "accept" function can be used to inspect the previous value, if any, and accept or reject the change. It's also provides a safe way to block other others from writing to the same shard while inspecting. Returns the deleted value, or false when no value was assigned.
func (*Map[K, V]) Get ¶
Get returns a value for a key. Returns false when no value has been assign for key.
func (*Map[K, V]) Set ¶
Set assigns a value to a key. Returns the previous value, or false when no value was assigned.
func (*Map[K, V]) SetAccept ¶
func (m *Map[K, V]) SetAccept(key K, value V, accept func(prev V, replaced bool) bool) (prev V, replaced bool)
SetAccept assigns a value to a key. The "accept" function can be used to inspect the previous value, if any, and accept or reject the change. It's also provides a safe way to block other others from writing to the same shard while inspecting. Returns the previous value, or false when no value was assigned.