bevy/crates
JoJoJet 1efdbb7e3e Remove the SystemParamState trait and remove types like ResState (#6919)
Spiritual successor to #5205.
Actual successor to #6865.

# Objective

Currently, system params are defined using three traits: `SystemParam`, `ReadOnlySystemParam`, `SystemParamState`. The behavior for each param is specified by the `SystemParamState` trait, while `SystemParam` simply defers to the state.

Splitting the traits in this way makes it easier to implement within macros, but it increases the cognitive load. Worst of all, this approach requires each `MySystemParam` to have a public `MySystemParamState` type associated with it.

## Solution

* Merge the trait `SystemParamState` into `SystemParam`.
* Remove all trivial `SystemParam` state types. 
  * `OptionNonSendMutState<T>`: you will not be missed.

---

- [x] Fix/resolve the remaining test failure.

## Changelog

* Removed the trait `SystemParamState`, merging its functionality into `SystemParam`.

## Migration Guide

**Note**: this should replace the migration guide for #6865.
This is relative to Bevy 0.9, not main.

The traits `SystemParamState` and `SystemParamFetch` have been removed, and their functionality has been transferred to `SystemParam`.


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

// After (0.10)
unsafe impl SystemParam for MyParam<'_, '_> {
    type State = MyParamState;
    type Item<'w, 's> = MyParam<'w, 's>;
    fn init_state(world: &mut World, system_meta: &mut SystemMeta) -> Self::State { ... }
    fn get_param<'w, 's>(state: &mut Self::State, ...) -> Self::Item<'w, 's>;
}
unsafe impl ReadOnlySystemParam for MyParam<'_, '_> { }
```

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

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

// After
unsafe impl ReadOnlySystemParam for MyParam<'_, '_> {}
```
2023-01-07 23:20:32 +00:00
..
bevy_animation Parallelize forward kinematics animation systems (#6785) 2023-01-04 20:43:39 +00:00
bevy_app Fix various typos (#7096) 2023-01-06 00:43:30 +00:00
bevy_asset Fix various typos (#7096) 2023-01-06 00:43:30 +00:00
bevy_audio document file formats for bytes field of AudioSource (#6619) 2022-12-11 18:10:02 +00:00
bevy_core Break CorePlugin into TaskPoolPlugin, TypeRegistrationPlugin, FrameCountPlugin. (#7083) 2023-01-05 11:42:35 +00:00
bevy_core_pipeline Fix doc comment "Turbo" -> "Extreme" (#7091) 2023-01-06 17:46:44 +00:00
bevy_derive Fix ndk-macro link (#7027) 2022-12-25 05:06:03 +00:00
bevy_diagnostic Fix various typos (#7096) 2023-01-06 00:43:30 +00:00
bevy_dylib Release 0.9.0 (#6568) 2022-11-12 20:01:29 +00:00
bevy_dynamic_plugin Adapt path type of dynamically_load_plugin (#6734) 2022-12-05 23:39:43 +00:00
bevy_ecs Remove the SystemParamState trait and remove types like ResState (#6919) 2023-01-07 23:20:32 +00:00
bevy_ecs_compile_fail_tests Fix clippy lints and failed test with Rust 1.66 (#6945) 2022-12-15 18:05:15 +00:00
bevy_encase_derive Release 0.9.0 (#6568) 2022-11-12 20:01:29 +00:00
bevy_gilrs Bump gilrs version to 0.10 (#6558) 2022-11-15 20:31:17 +00:00
bevy_gltf enum Visibility component (#6320) 2022-12-25 00:39:29 +00:00
bevy_hierarchy Fix various typos (#7096) 2023-01-06 00:43:30 +00:00
bevy_input add Axis::devices to get all the input devices (#5400) 2023-01-06 18:00:22 +00:00
bevy_internal Break CorePlugin into TaskPoolPlugin, TypeRegistrationPlugin, FrameCountPlugin. (#7083) 2023-01-05 11:42:35 +00:00
bevy_log Fix suppression of all console logs when trace_tracy is enabled (#6955) 2022-12-20 23:45:43 +00:00
bevy_macro_utils Release 0.9.0 (#6568) 2022-11-12 20:01:29 +00:00
bevy_math Improve code/comments for Ray::intersect_plane and its tests (#6823) 2022-12-05 22:49:06 +00:00
bevy_mikktspace Release 0.9.0 (#6568) 2022-11-12 20:01:29 +00:00
bevy_pbr Fix various typos (#7096) 2023-01-06 00:43:30 +00:00
bevy_ptr Round out the untyped api s (#7009) 2022-12-27 16:05:16 +00:00
bevy_reflect bevy_reflect: Fix deserialization with readers (#6894) 2023-01-04 22:03:31 +00:00
bevy_reflect_compile_fail_tests bevy_reflect: Add compile fail tests for bevy_reflect (#7041) 2023-01-02 21:07:33 +00:00
bevy_render Remove the SystemParamState trait and remove types like ResState (#6919) 2023-01-07 23:20:32 +00:00
bevy_scene Fix various typos (#7096) 2023-01-06 00:43:30 +00:00
bevy_sprite Fix various typos (#7096) 2023-01-06 00:43:30 +00:00
bevy_tasks Fix various typos (#7096) 2023-01-06 00:43:30 +00:00
bevy_text Remove TextError::ExceedMaxTextAtlases(usize) variant (#6796) 2022-12-05 23:23:16 +00:00
bevy_time Fix various typos (#7096) 2023-01-06 00:43:30 +00:00
bevy_transform Add a reparented_to method to GlobalTransform (#7020) 2022-12-25 00:51:20 +00:00
bevy_ui Fix various typos (#7096) 2023-01-06 00:43:30 +00:00
bevy_utils Fix various typos (#7096) 2023-01-06 00:43:30 +00:00
bevy_window Fix various typos (#7096) 2023-01-06 00:43:30 +00:00
bevy_winit fix cursor grab issue (#7010) 2023-01-04 23:00:12 +00:00