// Package set implements sets of any type. package set type Set[Elem comparable] map[Elem]struct{} func Make[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) } }