blob: 7a0c56d168b2e00bbe53c8748fb727696ec118e0 [file] [log] [blame]
// Package set implements sets of any type.
package set
type Set[type Elem comparable] map[Elem]struct{}
func Make[type Elem comparable]() Set[Elem] {
return make(Set[Elem])
}
func (s Set[Elem]) Add(v Elem) {
s[v] = struct{}{}
}
func (s Set[Elem]) Delete(v Elem) {
delete(s, v)
}
func (s Set[Elem]) Contains(v Elem) bool {
_, ok := s[v]
return ok
}
func (s Set[Elem]) Len() int {
return len(s)
}
func (s Set[Elem]) Iterate(f func(Elem)) {
for v := range s {
f(v)
}
}