feat: copied code over

This commit is contained in:
2026-01-19 19:32:08 -05:00
parent 5f2dcc9394
commit 091bc70172
18 changed files with 1102 additions and 6 deletions

57
pkg/set/set.go Normal file
View File

@@ -0,0 +1,57 @@
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
}