github.com/hanks177/podman/v4@v4.1.3-0.20220613032544-16d90015bc83/pkg/domain/entities/set.go (about) 1 package entities 2 3 import ( 4 "strings" 5 ) 6 7 type StringSet struct { 8 m map[string]struct{} 9 } 10 11 func NewStringSet(elem ...string) *StringSet { 12 s := &StringSet{} 13 s.m = make(map[string]struct{}, len(elem)) 14 for _, e := range elem { 15 s.Add(e) 16 } 17 return s 18 } 19 20 func (s *StringSet) Add(elem string) { 21 s.m[elem] = struct{}{} 22 } 23 24 func (s *StringSet) Remove(elem string) { 25 delete(s.m, elem) 26 } 27 28 func (s *StringSet) Contains(elem string) bool { 29 _, ok := s.m[elem] 30 return ok 31 } 32 33 func (s *StringSet) Elements() []string { 34 keys := make([]string, len(s.m)) 35 i := 0 36 for k := range s.m { 37 keys[i] = k 38 i++ 39 } 40 return keys 41 } 42 43 func (s *StringSet) String() string { 44 return strings.Join(s.Elements(), ", ") 45 }