-
-
Notifications
You must be signed in to change notification settings - Fork 3.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add methods for joining queries with lists. #5075
Closed
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
alice-i-cecile
added
A-ECS
Entities, components, systems, and events
C-Usability
A targeted quality-of-life change that makes Bevy easier to use
labels
Jun 22, 2022
Does this fully solve #1658? |
Converting to draft because I'd like to base this on #5170 which will fix the unsoundness instead. |
alice-i-cecile
added
the
S-Blocked
This cannot move forward until something else changes
label
Jul 3, 2022
tim-blackbird
force-pushed
the
query-iter-join
branch
from
August 3, 2022 11:23
d4b825e
to
3a8467f
Compare
tim-blackbird
force-pushed
the
query-iter-join
branch
from
September 2, 2022 08:57
c8d0492
to
b5f79b1
Compare
tguichaoua
reviewed
Sep 2, 2022
Co-authored-by: Tristan Guichaoua <[email protected]>
BoxyUwU
removed
S-Blocked
This cannot move forward until something else changes
P-Unsound
A bug that results in undefined compiler behavior
labels
Sep 2, 2022
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
A-ECS
Entities, components, systems, and events
C-Usability
A targeted quality-of-life change that makes Bevy easier to use
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
.