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.

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.

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`

.

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`

.

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.

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.

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`

.

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.

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.

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.

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.

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.

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.

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.

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.

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`

.