Minimal indexmap
support for rustc-rayon
#14
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.
Currently,
indexmap
has an optional "internal only" dependency onrustc-rayon
to implement parallel iterator support for use in the compiler. This PR flips that around to haverustc-rayon
implements those parallel iterators, soindexmap
doesn't need to bother with this relatively niche use-case. If this is accepted and published, I intend to remove that "internal" dependency.These implementations are all straightforward with the
Slice
API:impl<'a, K, V, S> IntoParallelIterator for &'a IndexMap<K, V, S>
impl<'a, K, V, S> IntoParallelIterator for &'a mut IndexMap<K, V, S>
impl<'a, T, S> IntoParallelIterator for &'a IndexSet<T, S>
However,
indexmap/rustc-rayon
also had by-valueIntoParallelIterator
implementations that are not feasible without direct access to their storage. Nothing in the compiler is currently using that though, so I think it's ok to drop it.