mirror of
https://github.com/hanzo-ds/sqlparser.git
synced 2026-10-30 20:53:50 +00:00
35 lines
586 B
Go
35 lines
586 B
Go
package parser
|
|
|
|
type Set[T comparable] struct {
|
|
m map[T]struct{}
|
|
}
|
|
|
|
func NewSet[T comparable](members ...T) *Set[T] {
|
|
m := make(map[T]struct{})
|
|
for _, member := range members {
|
|
m[member] = struct{}{}
|
|
}
|
|
return &Set[T]{m: m}
|
|
}
|
|
|
|
func (s *Set[T]) Add(member T) {
|
|
s.m[member] = struct{}{}
|
|
}
|
|
|
|
func (s *Set[T]) Remove(member T) {
|
|
delete(s.m, member)
|
|
}
|
|
|
|
func (s *Set[T]) Contains(member T) bool {
|
|
_, ok := s.m[member]
|
|
return ok
|
|
}
|
|
|
|
func (s *Set[T]) Members() []T {
|
|
members := make([]T, 0, len(s.m))
|
|
for member := range s.m {
|
|
members = append(members, member)
|
|
}
|
|
return members
|
|
}
|