github.com/cycloidio/terraform@v1.1.10-0.20220513142504-76d5c768dc63/addrs/set.go (about) 1 package addrs 2 3 // Set represents a set of addresses of types that implement UniqueKeyer. 4 type Set map[UniqueKey]UniqueKeyer 5 6 func (s Set) Has(addr UniqueKeyer) bool { 7 _, exists := s[addr.UniqueKey()] 8 return exists 9 } 10 11 func (s Set) Add(addr UniqueKeyer) { 12 s[addr.UniqueKey()] = addr 13 } 14 15 func (s Set) Remove(addr UniqueKeyer) { 16 delete(s, addr.UniqueKey()) 17 } 18 19 func (s Set) Union(other Set) Set { 20 ret := make(Set) 21 for k, addr := range s { 22 ret[k] = addr 23 } 24 for k, addr := range other { 25 ret[k] = addr 26 } 27 return ret 28 } 29 30 func (s Set) Intersection(other Set) Set { 31 ret := make(Set) 32 for k, addr := range s { 33 if _, exists := other[k]; exists { 34 ret[k] = addr 35 } 36 } 37 for k, addr := range other { 38 if _, exists := s[k]; exists { 39 ret[k] = addr 40 } 41 } 42 return ret 43 }