Skylib module containing common hash-set algorithms. An empty set can be created using: `sets.make()`, or it can be created with some starting values if you pass it an sequence: `sets.make([1, 2, 3])`. This returns a struct containing all of the values as keys in a dictionary - this means that all passed in values must be hashable. The values in the set can be retrieved using `sets.to_list(my_set)`. An arbitrary object can be tested whether it is a set generated by `sets.make()` or not with the `types.is_set()` method in types.bzl. ## sets.make
sets.make(elements)
Creates a new set. All elements must be hashable. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | elements | Optional sequence to construct the set out of. | None | **RETURNS** A set containing the passed in values. ## sets.copy
sets.copy(s)
Creates a new set from another set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | s | A set, as returned by sets.make(). | none | **RETURNS** A new set containing the same elements as `s`. ## sets.to_list
sets.to_list(s)
Creates a list from the values in the set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | s | A set, as returned by sets.make(). | none | **RETURNS** A list of values inserted into the set. ## sets.insert
sets.insert(s, e)
Inserts an element into the set. Element must be hashable. This mutates the original set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | s | A set, as returned by sets.make(). | none | | e | The element to be inserted. | none | **RETURNS** The set `s` with `e` included. ## sets.contains
sets.contains(a, e)
Checks for the existence of an element in a set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | a | A set, as returned by sets.make(). | none | | e | The element to look for. | none | **RETURNS** True if the element exists in the set, False if the element does not. ## sets.is_equal
sets.is_equal(a, b)
Returns whether two sets are equal. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | a | A set, as returned by sets.make(). | none | | b | A set, as returned by sets.make(). | none | **RETURNS** True if `a` is equal to `b`, False otherwise. ## sets.is_subset
sets.is_subset(a, b)
Returns whether `a` is a subset of `b`. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | a | A set, as returned by sets.make(). | none | | b | A set, as returned by sets.make(). | none | **RETURNS** True if `a` is a subset of `b`, False otherwise. ## sets.disjoint
sets.disjoint(a, b)
Returns whether two sets are disjoint. Two sets are disjoint if they have no elements in common. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | a | A set, as returned by sets.make(). | none | | b | A set, as returned by sets.make(). | none | **RETURNS** True if `a` and `b` are disjoint, False otherwise. ## sets.intersection
sets.intersection(a, b)
Returns the intersection of two sets. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | a | A set, as returned by sets.make(). | none | | b | A set, as returned by sets.make(). | none | **RETURNS** A set containing the elements that are in both `a` and `b`. ## sets.union
sets.union(args)
Returns the union of several sets. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | args | An arbitrary number of sets. | none | **RETURNS** The set union of all sets in `*args`. ## sets.difference
sets.difference(a, b)
Returns the elements in `a` that are not in `b`. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | a | A set, as returned by sets.make(). | none | | b | A set, as returned by sets.make(). | none | **RETURNS** A set containing the elements that are in `a` but not in `b`. ## sets.length
sets.length(s)
Returns the number of elements in a set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | s | A set, as returned by sets.make(). | none | **RETURNS** An integer representing the number of elements in the set. ## sets.remove
sets.remove(s, e)
Removes an element from the set. Element must be hashable. This mutates the original set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | s | A set, as returned by sets.make(). | none | | e | The element to be removed. | none | **RETURNS** The set `s` with `e` removed. ## sets.repr
sets.repr(s)
Returns a string value representing the set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | s | A set, as returned by sets.make(). | none | **RETURNS** A string representing the set. ## sets.str
sets.str(s)
Returns a string value representing the set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | s | A set, as returned by sets.make(). | none | **RETURNS** A string representing the set.