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()
 | |
| }
 |