diff --git a/functions.go b/functions.go index 56f5210..36661e3 100644 --- a/functions.go +++ b/functions.go @@ -1,6 +1,6 @@ package sets -// Union returns a union of the given sets (left ∪ right) +// Union returns a union of the given sets (left ∪ right). func Union[T comparable](left, right *Set[T]) *Set[T] { left.mux.RLock() right.mux.RLock() @@ -23,7 +23,7 @@ func Union[T comparable](left, right *Set[T]) *Set[T] { } } -// Intersection returns an intersection of the given sets (left ∩ right) +// Intersection returns an intersection of the given sets (left ∩ right). func Intersection[T comparable](left, right *Set[T]) *Set[T] { left.mux.RLock() right.mux.RLock() @@ -43,7 +43,7 @@ func Intersection[T comparable](left, right *Set[T]) *Set[T] { } } -// Diff returns the relative complement of sets (left ∖ right) +// Diff returns the relative complement of sets (left ∖ right). func Diff[T comparable](left, right *Set[T]) *Set[T] { left.mux.RLock() right.mux.RLock() @@ -63,7 +63,7 @@ func Diff[T comparable](left, right *Set[T]) *Set[T] { } } -// SymmetricDiff returns the symmetric difference between sets (left ⊖ right) +// SymmetricDiff returns the symmetric difference between sets (left ⊖ right). func SymmetricDiff[T comparable](left, right *Set[T]) *Set[T] { left.mux.RLock() right.mux.RLock() @@ -88,7 +88,7 @@ func SymmetricDiff[T comparable](left, right *Set[T]) *Set[T] { } } -// Equal checks whether the sets are equal (left = right) +// Equal checks whether the sets are equal (left = right). func Equal[T comparable](left, right *Set[T]) bool { left.mux.RLock() right.mux.RLock() diff --git a/set.go b/set.go index ae88d37..f5ca577 100644 --- a/set.go +++ b/set.go @@ -4,13 +4,13 @@ import ( "sync" ) -// Set represents a set of values +// Set represents a set of values. type Set[T comparable] struct { store map[T]struct{} mux sync.RWMutex } -// New creates a new set +// New creates a new set. func New[T comparable](data ...T) *Set[T] { set := &Set[T]{ store: map[T]struct{}{}, @@ -22,7 +22,7 @@ func New[T comparable](data ...T) *Set[T] { return set } -// Size returns number of elements in set +// Size returns number of elements in set. func (s *Set[T]) Size() int { s.mux.RLock() defer s.mux.RUnlock() @@ -30,7 +30,7 @@ func (s *Set[T]) Size() int { return len(s.store) } -// Contains checks whether the value is contained in the set +// Contains checks whether the value is contained in the set. func (s *Set[T]) Contains(val T) bool { s.mux.RLock() defer s.mux.RUnlock() @@ -39,7 +39,7 @@ func (s *Set[T]) Contains(val T) bool { return ok } -// Insert inserts a value into the set if the value was not already present +// Insert inserts a value into the set if the value was not already present. func (s *Set[T]) Insert(val T) bool { s.mux.Lock() defer s.mux.Unlock() @@ -51,7 +51,7 @@ func (s *Set[T]) Insert(val T) bool { return true } -// Delete removes a value from the set if the value was already present +// Delete removes a value from the set if the value was already present. func (s *Set[T]) Delete(val T) bool { s.mux.Lock() defer s.mux.Unlock() @@ -63,7 +63,7 @@ func (s *Set[T]) Delete(val T) bool { return false } -// Slice returns a slice which contains the elements from the set +// Slice returns a slice which contains the elements from the set. func (s *Set[T]) Slice() []T { s.mux.RLock() defer s.mux.RUnlock()