Added unique set
This commit is contained in:
		
							
								
								
									
										32
									
								
								ethutil/set.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								ethutil/set.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
package ethutil
 | 
			
		||||
 | 
			
		||||
type Settable interface {
 | 
			
		||||
	AsSet() UniqueSet
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type UniqueSet map[interface{}]struct{}
 | 
			
		||||
 | 
			
		||||
func NewSet(v ...interface{}) UniqueSet {
 | 
			
		||||
	set := make(UniqueSet)
 | 
			
		||||
	for _, val := range v {
 | 
			
		||||
		set.Insert(val)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return set
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (self UniqueSet) Insert(k interface{}) UniqueSet {
 | 
			
		||||
	self[k] = struct{}{}
 | 
			
		||||
 | 
			
		||||
	return self
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (self UniqueSet) Include(k interface{}) bool {
 | 
			
		||||
	_, ok := self[k]
 | 
			
		||||
 | 
			
		||||
	return ok
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Set(s Settable) UniqueSet {
 | 
			
		||||
	return s.AsSet()
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user