Documentation
¶
Index ¶
- func CloneMapIfNil[K comparable, V any, T any](dirty *T, original *T, getMap func(*T) map[K]V) map[K]V
- type Box
- func (b *Box[T]) Change(apply func(T))
- func (b *Box[T]) ChangeIf(cond func(T) bool, apply func(T)) bool
- func (b *Box[T]) Delete()
- func (b *Box[T]) Dirty() bool
- func (b *Box[T]) Finalize() (T, bool)
- func (b *Box[T]) Locked(fn func(Value[T]))
- func (b *Box[T]) Original() T
- func (b *Box[T]) Set(value T)
- func (b *Box[T]) Value() T
- type Cloneable
- type Map
- type MapEntry
- func (e *MapEntry[K, V]) Change(apply func(V))
- func (e *MapEntry[K, V]) ChangeIf(cond func(V) bool, apply func(V)) bool
- func (e *MapEntry[K, V]) Delete()
- func (e *MapEntry) Dirty() bool
- func (e *MapEntry) Key() K
- func (e *MapEntry[K, V]) Locked(fn func(Value[V]))
- func (e *MapEntry) Original() V
- func (e *MapEntry) Value() V
- type SyncMap
- type SyncMapEntry
- func (e *SyncMapEntry[K, V]) Change(apply func(V))
- func (e *SyncMapEntry[K, V]) ChangeIf(cond func(V) bool, apply func(V)) bool
- func (e *SyncMapEntry[K, V]) Delete()
- func (e *SyncMapEntry[K, V]) DeleteIf(cond func(V) bool)
- func (e *SyncMapEntry[K, V]) Dirty() bool
- func (e *SyncMapEntry) Key() K
- func (e *SyncMapEntry[K, V]) Locked(fn func(Value[V]))
- func (e *SyncMapEntry) Original() V
- func (e *SyncMapEntry[K, V]) Value() V
- type Value
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CloneMapIfNil ¶
func CloneMapIfNil[K comparable, V any, T any](dirty *T, original *T, getMap func(*T) map[K]V) map[K]V
Types ¶
type Map ¶
type Map[K comparable, V Cloneable[V]] struct { // contains filtered or unexported fields }
func NewMap ¶
func NewMap[K comparable, V Cloneable[V]](base map[K]V) *Map[K, V]
func (*Map[K, V]) Add ¶
func (m *Map[K, V]) Add(key K, value V)
Add sets a new entry in the dirty map without checking if it exists in the base map. The entry added is considered dirty, so it should be a fresh value, mutable until finalized (i.e., it will not be cloned before changing if a change is made). If modifying an entry that may exist in the base map, use `Change` instead.
type MapEntry ¶
type MapEntry[K comparable, V Cloneable[V]] struct { // contains filtered or unexported fields }
type SyncMap ¶
type SyncMap[K comparable, V Cloneable[V]] struct { // contains filtered or unexported fields }
func NewSyncMap ¶
func NewSyncMap[K comparable, V Cloneable[V]](base map[K]V, finalizeValue func(dirty V, original V) V) *SyncMap[K, V]
func (*SyncMap[K, V]) Load ¶
func (m *SyncMap[K, V]) Load(key K) (*SyncMapEntry[K, V], bool)
func (*SyncMap[K, V]) LoadOrStore ¶
func (m *SyncMap[K, V]) LoadOrStore(key K, value V) (*SyncMapEntry[K, V], bool)
func (*SyncMap[K, V]) Range ¶
func (m *SyncMap[K, V]) Range(fn func(*SyncMapEntry[K, V]) bool)
type SyncMapEntry ¶
type SyncMapEntry[K comparable, V Cloneable[V]] struct { // contains filtered or unexported fields }
func (*SyncMapEntry[K, V]) Change ¶
func (e *SyncMapEntry[K, V]) Change(apply func(V))
func (*SyncMapEntry[K, V]) ChangeIf ¶
func (e *SyncMapEntry[K, V]) ChangeIf(cond func(V) bool, apply func(V)) bool
func (*SyncMapEntry[K, V]) Delete ¶
func (e *SyncMapEntry[K, V]) Delete()
func (*SyncMapEntry[K, V]) DeleteIf ¶
func (e *SyncMapEntry[K, V]) DeleteIf(cond func(V) bool)
func (*SyncMapEntry[K, V]) Dirty ¶
func (e *SyncMapEntry[K, V]) Dirty() bool
func (*SyncMapEntry[K, V]) Locked ¶
func (e *SyncMapEntry[K, V]) Locked(fn func(Value[V]))
func (*SyncMapEntry[K, V]) Value ¶
func (e *SyncMapEntry[K, V]) Value() V
Click to show internal directories.
Click to hide internal directories.