| // 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) | |
| } | |
| } |