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  }