symmetric difference operation for sets via xor
#24286
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.
closes nim-lang/RFCs#554
Adds a symmetric difference operation to the language bitset type. This maps to a simple
xor
operation on the backend and thus is likely faster than the current alternatives, namely(a - b) + (b - a)
ora + b - a * b
. The compiler VM implementation of bitsets already implemented this viasymdiffSets
but it was never used.The standalone binary operation is added to
setutils
, namedsymmetricDifference
in line with hash sets. An operator version-+-
and an in-place version liketoggle
as described in the RFC are also added, implemented as trivial sugar.