Add UnionFind::new_set
#684
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adds
UnionFind::new_setto add a new set to an existingUnionFind, which is helpful when you want to incrementally use theUnionFindalgorithm and don't know how many elements you have ahead of time.Fixes: #683
Also adds additional utility methods since
UnionFinddoesn't have fixed length anymore:UnionFind::new_empty()-- equivalent toVec::new()for when you need aconstemptyUnionFind.UnionFind::is_empty()/UnionFind::len()-- returns the number of elements, likeVec::is_empty()/Vec::len()impl Default for UnionFind-- makes an emptyUnionFindI also switched
self.parent.len()calls to useself.len()since that's more canonical.I also added a test checking that
UnionFind::new_set()works correctly.