bevy/crates/bevy_ecs_compile_fail_tests/tests/ui
JoJoJet 1af73624fa Simplify trait hierarchy for SystemParam (#6865)
# Objective

* Implementing a custom `SystemParam` by hand requires implementing three traits -- four if it is read-only.
* The trait `SystemParamFetch<'w, 's>` is a workaround from before we had generic associated types, and is no longer necessary.

## Solution

* Combine the trait `SystemParamFetch` with `SystemParamState`.
    * I decided to remove the `Fetch` name and keep the `State` name, since the former was consistently conflated with the latter.
* Replace the trait `ReadOnlySystemParamFetch` with `ReadOnlySystemParam`, which simplifies trait bounds in generic code.

---

## Changelog

- Removed the trait `SystemParamFetch`, moving its functionality to `SystemParamState`.
- Replaced the trait `ReadOnlySystemParamFetch` with `ReadOnlySystemParam`.

## Migration Guide

The trait `SystemParamFetch` has been removed, and its functionality has been transferred to `SystemParamState`.

```rust
// Before
impl SystemParamState for MyParamState {
    fn init(world: &mut World, system_meta: &mut SystemMeta) -> Self { ... }
}
impl<'w, 's> SystemParamFetch<'w, 's> for MyParamState {
    type Item = MyParam<'w, 's>;
    fn get_param(...) -> Self::Item;
}

// After
impl SystemParamState for MyParamState {
    type Item<'w, 's> = MyParam<'w, 's>; // Generic associated types!
    fn init(world: &mut World, system_meta: &mut SystemMeta) -> Self { ... }
    fn get_param<'w, 's>(...) -> Self::Item<'w, 's>;
}
```

The trait `ReadOnlySystemParamFetch` has been replaced with `ReadOnlySystemParam`.

```rust
// Before
unsafe impl ReadOnlySystemParamFetch for MyParamState {}

// After
unsafe impl<'w, 's> ReadOnlySystemParam for MyParam<'w, 's> {}
```
2022-12-11 18:34:14 +00:00
..
entity_ref_mut_lifetime_safety.rs Spawn now takes a Bundle (#6054) 2022-09-23 19:55:54 +00:00
entity_ref_mut_lifetime_safety.stderr REMOVE unsound lifetime annotations on EntityMut (#4096) 2022-04-04 21:33:33 +00:00
query_exact_sized_iterator_safety.rs Update ExactSizeIterator impl to support archetypal filters (With, Without) (#5124) 2022-06-29 02:15:28 +00:00
query_exact_sized_iterator_safety.stderr Fix trybuild tests broken by rust 1.65 (#6457) 2022-11-03 15:09:27 +00:00
query_iter_combinations_mut_iterator_safety.rs Replace many_for_each_mut with iter_many_mut. (#5402) 2022-07-30 01:38:13 +00:00
query_iter_combinations_mut_iterator_safety.stderr Fix trybuild tests broken by rust 1.65 (#6457) 2022-11-03 15:09:27 +00:00
query_iter_many_mut_iterator_safety.rs Make Resource trait opt-in, requiring #[derive(Resource)] V2 (#5577) 2022-08-08 21:36:35 +00:00
query_iter_many_mut_iterator_safety.stderr Fix trybuild tests broken by rust 1.65 (#6457) 2022-11-03 15:09:27 +00:00
query_lifetime_safety.rs Spawn now takes a Bundle (#6054) 2022-09-23 19:55:54 +00:00
query_lifetime_safety.stderr yeet unsound lifetime annotations on Query methods (#4243) 2022-03-22 02:49:41 +00:00
query_to_readonly.rs Allows conversion of mutable queries to immutable queries (#5376) 2022-07-20 01:09:45 +00:00
query_to_readonly.stderr Allows conversion of mutable queries to immutable queries (#5376) 2022-07-20 01:09:45 +00:00
system_param_derive_readonly.rs Simplify trait hierarchy for SystemParam (#6865) 2022-12-11 18:34:14 +00:00
system_param_derive_readonly.stderr Simplify trait hierarchy for SystemParam (#6865) 2022-12-11 18:34:14 +00:00
system_query_get_lifetime_safety.rs Make Resource trait opt-in, requiring #[derive(Resource)] V2 (#5577) 2022-08-08 21:36:35 +00:00
system_query_get_lifetime_safety.stderr Make Resource trait opt-in, requiring #[derive(Resource)] V2 (#5577) 2022-08-08 21:36:35 +00:00
system_query_get_many_lifetime_safety.rs Make Resource trait opt-in, requiring #[derive(Resource)] V2 (#5577) 2022-08-08 21:36:35 +00:00
system_query_get_many_lifetime_safety.stderr Make Resource trait opt-in, requiring #[derive(Resource)] V2 (#5577) 2022-08-08 21:36:35 +00:00
system_query_get_many_mut_lifetime_safety.rs Make Resource trait opt-in, requiring #[derive(Resource)] V2 (#5577) 2022-08-08 21:36:35 +00:00
system_query_get_many_mut_lifetime_safety.stderr Make Resource trait opt-in, requiring #[derive(Resource)] V2 (#5577) 2022-08-08 21:36:35 +00:00
system_query_iter_lifetime_safety.rs Assert compiler errors for compile_fail tests (#3067) 2021-11-13 22:43:19 +00:00
system_query_iter_lifetime_safety.stderr Fix clippy lints for 1.57 (#3238) 2021-12-02 23:40:37 +00:00
system_query_iter_many_mut_lifetime_safety.rs Make Resource trait opt-in, requiring #[derive(Resource)] V2 (#5577) 2022-08-08 21:36:35 +00:00
system_query_iter_many_mut_lifetime_safety.stderr Replace many_for_each_mut with iter_many_mut. (#5402) 2022-07-30 01:38:13 +00:00
system_query_set_get_lifetime_safety.rs Make Resource trait opt-in, requiring #[derive(Resource)] V2 (#5577) 2022-08-08 21:36:35 +00:00
system_query_set_get_lifetime_safety.stderr ParamSet for conflicting SystemParam:s (#2765) 2022-03-29 23:39:38 +00:00
system_query_set_iter_lifetime_safety.rs ParamSet for conflicting SystemParam:s (#2765) 2022-03-29 23:39:38 +00:00
system_query_set_iter_lifetime_safety.stderr ParamSet for conflicting SystemParam:s (#2765) 2022-03-29 23:39:38 +00:00
system_state_get_lifetime_safety.rs Assert compiler errors for compile_fail tests (#3067) 2021-11-13 22:43:19 +00:00
system_state_get_lifetime_safety.stderr Assert compiler errors for compile_fail tests (#3067) 2021-11-13 22:43:19 +00:00
system_state_iter_lifetime_safety.rs Assert compiler errors for compile_fail tests (#3067) 2021-11-13 22:43:19 +00:00
system_state_iter_lifetime_safety.stderr Assert compiler errors for compile_fail tests (#3067) 2021-11-13 22:43:19 +00:00
system_state_iter_mut_overlap_safety.rs Spawn now takes a Bundle (#6054) 2022-09-23 19:55:54 +00:00
system_state_iter_mut_overlap_safety.stderr Fix clippy lints for 1.57 (#3238) 2021-12-02 23:40:37 +00:00
world_query_derive.rs Introduce tests for derive(WorldQuery) (#4625) 2022-04-28 21:06:20 +00:00
world_query_derive.stderr Fix tests breaking when new WorldQuery impls are added (#6317) 2022-10-21 11:15:06 +00:00