// Copyright 2024 Matthew Rich . 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) } }