github.com/karalabe/go-ethereum@v0.8.5/ethutil/set.go (about) 1 package ethutil 2 3 type Settable interface { 4 AsSet() UniqueSet 5 } 6 7 type Stringable interface { 8 String() string 9 } 10 11 type UniqueSet map[string]struct{} 12 13 func NewSet(v ...Stringable) UniqueSet { 14 set := make(UniqueSet) 15 for _, val := range v { 16 set.Insert(val) 17 } 18 19 return set 20 } 21 22 func (self UniqueSet) Insert(k Stringable) UniqueSet { 23 self[k.String()] = struct{}{} 24 25 return self 26 } 27 28 func (self UniqueSet) Include(k Stringable) bool { 29 _, ok := self[k.String()] 30 31 return ok 32 } 33 34 func Set(s Settable) UniqueSet { 35 return s.AsSet() 36 }