From 9245c4beec192e6ea28d5ac5b3a7ad79ba320a29 Mon Sep 17 00:00:00 2001 From: Xe Iaso Date: Wed, 2 Jul 2025 22:22:34 +0000 Subject: [PATCH] feat(decaymap): add Delete method Signed-off-by: Xe Iaso --- decaymap/decaymap.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) 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.