shardmap

package
v0.0.0-...-48d2a37 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 5, 2025 License: MIT Imports: 7 Imported by: 0

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

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]) Clear

func (m *Map[K, V]) Clear()

Clear out all values from map

func (*Map[K, V]) Delete

func (m *Map[K, V]) Delete(key K) (prev *V, deleted bool)

Delete deletes a value for a key. Returns the deleted value, or false when no value was assigned.

func (*Map[K, V]) DeleteIfNil

func (m *Map[K, V]) DeleteIfNil(key K) (prev *V, deleted bool)

DeleteIfNil deletes a value for a key only if the current value's weak pointer is nil.

func (*Map[K, V]) Get

func (m *Map[K, V]) Get(key K) (value *V, ok bool)

Get returns a value for a key. Returns false when no value has been assign for key.

func (*Map[K, V]) Len

func (m *Map[K, V]) Len() int

Len returns the number of values in map. This is an approximation since keys may hold nil values that have not yet been cleaned up.

func (*Map[K, V]) Set

func (m *Map[K, V]) Set(key K, value *V) (prev *V, replaced bool)

Set assigns a value to a key. Returns the previous value, or false when no value was assigned.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL