Add methods for joining queries with lists. #5075
Closed
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.
Objective
This is similar in nature to #4879.
Add new new methods
iter_join_map(_mut)
to reduce the need to useQuery::get
.These methods, compared to
Query::get
:The name
iter_join_map
was chosen as the operation resembles an inner join onEntity
between aQuery
and an arbitrary list that is mapped toEntity
via the supplied fn.Examples
The same systems without this PR.
More examples.
If we had lending iterators :'( the mutable variant would simply look like this:
Note for reviewers
You may notice that
QueryJoinMapIter
andQueryManyIter
are practically identical.I tried to re-use
QueryJoinMapIter
with a hard-coded closure formap_f
foriter_many
, but in the return type it needs a concrete type forMapFn
.It seems to be impossible to use a function as a concrete type.
Follow up
iter_many
anditer_join_map
.