diff --git a/decaymap/decaymap.go b/decaymap/decaymap.go index 57ee6c2c..c5bdd08c 100644 --- a/decaymap/decaymap.go +++ b/decaymap/decaymap.go @@ -48,6 +48,26 @@ func (m *Impl[K, V]) expire(key K) bool { return true } +// Delete a value from the DecayMap by key. +// +// If the value does not exist, return false. Otherwise return true after +// deletion. +func (m *Impl[K, V]) Delete(key K) bool { + m.lock.RLock() + _, ok := m.data[key] + m.lock.RUnlock() + + if !ok { + return false + } + + m.lock.Unlock() + delete(m.data, key) + m.lock.Lock() + + return true +} + // Get gets a value from the DecayMap by key. // // If a value has expired, forcibly delete it if it was not updated.