Replace Sweep
with object-specific traits
#2106
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.
The old
Sweep
trait was over-generalized. There was no code that actually used it to abstract over multiple of its implementations, and I don't think it would have been practical to do so. Those implementations, on the other hand, were partially implemented not for single types, but tuples of them (thereby effectively adding arguments that the trait didn't have), while at the same time ignoring argument the trait did have.Overall, this was both messy and unnecessary. In this pull request, I've replaced those
Sweep
implementations with object-specific sweep traits that are more targeted to the needs of the object they're sweeping. This also provides a place for object-specific sweep documentation, some of which I've added.Lastly, this brings
operations::sweep
more in line with other operations modules, which function in a similar way.This came out of my work on #2098.