bevy/examples/ecs
Joseph ddbfa48711
Simplify parallel iteration methods (#8854)
# Objective

The `QueryParIter::for_each_mut` function is required when doing
parallel iteration with mutable queries.
This results in an unfortunate stutter:
`query.par_iter_mut().par_for_each_mut()` ('mut' is repeated).

## Solution

- Make `for_each` compatible with mutable queries, and deprecate
`for_each_mut`. In order to prevent `for_each` from being called
multiple times in parallel, we take ownership of the QueryParIter.

---

## Changelog

- `QueryParIter::for_each` is now compatible with mutable queries.
`for_each_mut` has been deprecated as it is now redundant.

## Migration Guide

The method `QueryParIter::for_each_mut` has been deprecated and is no
longer functional. Use `for_each` instead, which now supports mutable
queries.

```rust
// Before:
query.par_iter_mut().for_each_mut(|x| ...);

// After:
query.par_iter_mut().for_each(|x| ...);
```

The method `QueryParIter::for_each` now takes ownership of the
`QueryParIter`, rather than taking a shared reference.

```rust
// Before:
let par_iter = my_query.par_iter().batching_strategy(my_batching_strategy);
par_iter.for_each(|x| {
    // ...Do stuff with x...
    par_iter.for_each(|y| {
        // ...Do nested stuff with y...
    });
});

// After:
my_query.par_iter().batching_strategy(my_batching_strategy).for_each(|x| {
    // ...Do stuff with x...
    my_query.par_iter().batching_strategy(my_batching_strategy).for_each(|y| {
        // ...Do nested stuff with y...
    });
});
```
2023-07-23 11:09:24 +00:00
..
apply_deferred.rs Small doc fix (#8889) 2023-06-19 03:58:21 +00:00
component_change_detection.rs Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
custom_query_param.rs Fixed several missing links in docs. (#8117) 2023-04-23 17:28:36 +00:00
ecs_guide.rs Allow tuples and single plugins in add_plugins, deprecate add_plugin (#8097) 2023-06-21 20:51:03 +00:00
event.rs Require #[derive(Event)] on all Events (#7086) 2023-06-06 14:44:32 +00:00
fixed_timestep.rs Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
generic_system.rs Remove OnUpdate system set (#8260) 2023-04-04 00:49:41 +00:00
hierarchy.rs Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
iter_combinations.rs Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
nondeterministic_system_order.rs Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
parallel_query.rs Simplify parallel iteration methods (#8854) 2023-07-23 11:09:24 +00:00
removal_detection.rs Rename apply_system_buffers to apply_deferred (#8726) 2023-06-02 14:04:13 +00:00
run_conditions.rs Add or_else combinator to run_conditions.rs (#8714) 2023-05-31 16:52:36 +00:00
startup_system.rs Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
state.rs Rename Interaction::Clicked -> Interaction::Pressed (#8989) (#9027) 2023-07-05 09:25:31 +00:00
system_closure.rs Allow tuples and single plugins in add_plugins, deprecate add_plugin (#8097) 2023-06-21 20:51:03 +00:00
system_param.rs Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
system_piping.rs Allow tuples and single plugins in add_plugins, deprecate add_plugin (#8097) 2023-06-21 20:51:03 +00:00
timers.rs Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00