Require components viewed in Schedule
to implement Sync
.
#207
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.
Just requires
Task::View
to implementSend
(which is equivalent to the components themselves implementingSync
, asT
implementsSend
if and only if&T
implementsSync
). See the addedtrybuild
test for an example that previously (incorrectly) compiled but now does not.Not sure how many users would actually be affected by this. Most components stored in ECS patterns are fairly straight-forward, but I could see some user trying to store an
Rc
for some shared state between entities or something.In the future, there could be a special
Task
type that specifies which components are non-Sync
and can therefore not be borrowed simultaneously between two threads. This would allow all components to be used in schedules again. Not sure what the best API for such a feature is.