mirror of
https://github.com/tailscale/tailscale.git
synced 2025-04-21 14:11:56 +00:00
syncs: add map.Clear() method
Updates https://github.com/tailscale/corp/issues/13979 Signed-off-by: Denton Gentry <dgentry@tailscale.com>
This commit is contained in:
parent
239ad57446
commit
7e15c78a5a
@ -9,6 +9,7 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
|
|
||||||
|
"golang.org/x/exp/maps"
|
||||||
"tailscale.com/util/mak"
|
"tailscale.com/util/mak"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -227,6 +228,13 @@ func (m *Map[K, V]) Len() int {
|
|||||||
return len(m.m)
|
return len(m.m)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Clear removes all entries from the map.
|
||||||
|
func (m *Map[K, V]) Clear() {
|
||||||
|
m.mu.Lock()
|
||||||
|
defer m.mu.Unlock()
|
||||||
|
maps.Clear(m.m)
|
||||||
|
}
|
||||||
|
|
||||||
// WaitGroup is identical to [sync.WaitGroup],
|
// WaitGroup is identical to [sync.WaitGroup],
|
||||||
// but provides a Go method to start a goroutine.
|
// but provides a Go method to start a goroutine.
|
||||||
type WaitGroup struct{ sync.WaitGroup }
|
type WaitGroup struct{ sync.WaitGroup }
|
||||||
|
@ -137,4 +137,22 @@ func TestMap(t *testing.T) {
|
|||||||
t.Errorf("exactly one LoadOrStore should load")
|
t.Errorf("exactly one LoadOrStore should load")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("Clear", func(t *testing.T) {
|
||||||
|
var m Map[string, string]
|
||||||
|
_, _ = m.LoadOrStore("a", "1")
|
||||||
|
_, _ = m.LoadOrStore("b", "2")
|
||||||
|
_, _ = m.LoadOrStore("c", "3")
|
||||||
|
_, _ = m.LoadOrStore("d", "4")
|
||||||
|
_, _ = m.LoadOrStore("e", "5")
|
||||||
|
|
||||||
|
if m.Len() != 5 {
|
||||||
|
t.Errorf("Len after loading want=5 got=%d", m.Len())
|
||||||
|
}
|
||||||
|
|
||||||
|
m.Clear()
|
||||||
|
if m.Len() != 0 {
|
||||||
|
t.Errorf("Len after Clear want=0 got=%d", m.Len())
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user