35 lines
566 B
Go
35 lines
566 B
Go
|
// Copyright 2024 Matthew Rich <matthewrich.conf@gmail.com>. All rights reserved.
|
||
|
|
||
|
package ds
|
||
|
|
||
|
import (
|
||
|
)
|
||
|
|
||
|
type Set[Value comparable] map[Value]bool
|
||
|
|
||
|
func NewSet[Value comparable]() Set[Value] {
|
||
|
return make(map[Value]bool)
|
||
|
}
|
||
|
|
||
|
func (s Set[Value]) Add(value Value) {
|
||
|
s[value] = true
|
||
|
}
|
||
|
|
||
|
func (s Set[Value]) Delete(value Value) {
|
||
|
delete(s, value)
|
||
|
}
|
||
|
|
||
|
func (s Set[Value]) Contains(value Value) bool {
|
||
|
return s[value]
|
||
|
}
|
||
|
|
||
|
func (s Set[Value]) Len() int {
|
||
|
return len(s)
|
||
|
}
|
||
|
|
||
|
func (s Set[Value]) AddSlice(value []Value) {
|
||
|
for _, v := range value {
|
||
|
s.Add(v)
|
||
|
}
|
||
|
}
|