37 lines
		
	
	
		
			525 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			525 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package ethutil
 | 
						|
 | 
						|
type Settable interface {
 | 
						|
	AsSet() UniqueSet
 | 
						|
}
 | 
						|
 | 
						|
type Stringable interface {
 | 
						|
	String() string
 | 
						|
}
 | 
						|
 | 
						|
type UniqueSet map[string]struct{}
 | 
						|
 | 
						|
func NewSet(v ...Stringable) UniqueSet {
 | 
						|
	set := make(UniqueSet)
 | 
						|
	for _, val := range v {
 | 
						|
		set.Insert(val)
 | 
						|
	}
 | 
						|
 | 
						|
	return set
 | 
						|
}
 | 
						|
 | 
						|
func (self UniqueSet) Insert(k Stringable) UniqueSet {
 | 
						|
	self[k.String()] = struct{}{}
 | 
						|
 | 
						|
	return self
 | 
						|
}
 | 
						|
 | 
						|
func (self UniqueSet) Include(k Stringable) bool {
 | 
						|
	_, ok := self[k.String()]
 | 
						|
 | 
						|
	return ok
 | 
						|
}
 | 
						|
 | 
						|
func Set(s Settable) UniqueSet {
 | 
						|
	return s.AsSet()
 | 
						|
}
 |