package set import "iter" type Set[T comparable] map[T]bool func (s Set[T]) Add(items ...T) { for _, item := range items { s[item] = true } } func (s Set[T]) Has(item T) bool { return s[item] } func (s Set[T]) Remove(items ...T) { for _, item := range items { delete(s, item) } } func (s Set[T]) Merge(o Set[T]) { for item := range o { s.Add(item) } } func (s Set[T]) ToList() []T { list := []T{} for item := range s { list = append(list, item) } return list } func (s Set[T]) Items() iter.Seq[T] { return func(yield func(T) bool) { for item := range s { if !yield(item) { return } } } } func New[T comparable](items ...T) Set[T] { result := Set[T]{} for _, item := range items { result.Add(item) } return result }