package genutils type Set[T comparable] struct { m map[T]bool a []T } func (set *Set[T]) Add(values ...T) { if set.m == nil { set.m = make(map[T]bool, len(values)*4) } for _, value := range values { if set.m[value] { continue } set.m[value] = true set.a = append(set.a, value) } } func (set *Set[T]) Len() int { return len(set.a) } func (set *Set[T]) Values() []T { return set.a[:len(set.a):len(set.a)] }