bevy/crates
Zachary Harrold 950bd2284d
System::type_id Consistency (#11728)
# Objective

- Fixes #11679

## Solution

- Added `IntoSystem::system_type_id` which returns the equivalent of
`system.into_system().type_id()` without construction. This allows for
getting the `TypeId` of functions (a function is an unnamed type and
therefore you cannot call `TypeId::of::<apply_deferred::System>()`)
- Added default implementation of `System::type_id` to ensure
consistency between implementations. Some returned `Self`, while others
were returning an inner value instead. This ensures consistency with
`IntoSystem::system_type_id`.

## Migration Guide

If you use `System::type_id()` on function systems (exclusive or not),
ensure you are comparing its value to other `System::type_id()` calls,
or `IntoSystem::system_type_id()`.

This code wont require any changes, because `IntoSystem`'s are directly
compared to each other.

```rust
fn test_system() {}

let type_id = test_system.type_id();

// ...

// No change required
assert_eq!(test_system.type_id(), type_id);
```

Likewise, this code wont, because `System`'s are directly compared.

```rust
fn test_system() {}

let type_id = IntoSystem::into_system(test_system).type_id();

// ...

// No change required
assert_eq!(IntoSystem::into_system(test_system).type_id(), type_id);
```

The below _does_ require a change, since you're comparing a `System`
type to a `IntoSystem` type.

```rust
fn test_system() {}

// Before
assert_eq!(test_system.type_id(), IntoSystem::into_system(test_system).type_id());

// After
assert_eq!(test_system.system_type_id(), IntoSystem::into_system(test_system).type_id());
```
2024-02-06 14:43:33 +00:00
..
bevy_a11y Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_animation Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_app Use TypeIdMap whenever possible (#11684) 2024-02-03 23:47:04 +00:00
bevy_asset Use TypeIdMap whenever possible (#11684) 2024-02-03 23:47:04 +00:00
bevy_audio Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_core Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_core_pipeline sort by pipeline then mesh for non transparent passes for massively better batching (#11671) 2024-02-05 22:12:22 +00:00
bevy_derive Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_diagnostic Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_dylib Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_dynamic_plugin Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_ecs System::type_id Consistency (#11728) 2024-02-06 14:43:33 +00:00
bevy_ecs_compile_fail_tests Deprecated Various Component Methods from Query and QueryState (#9920) 2024-02-04 01:01:59 +00:00
bevy_encase_derive Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_gilrs Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_gizmos fix(primitives): fix polygon gizmo rendering bug (#11699) 2024-02-05 15:09:49 +00:00
bevy_gltf Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_hierarchy Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_input Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_internal Don't unconditionally enable bevy_render or bevy_assets if mutli-threaded feature is enabled (#11726) 2024-02-06 14:40:56 +00:00
bevy_log Update tracing-tracy requirement from 0.10.4 to 0.11.0 and tracy-client requirement from 0.16.4 to 0.17.0 (#11678) 2024-02-03 21:44:38 +00:00
bevy_macro_utils Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_macros_compile_fail_tests Standardize toml format with taplo (#10594) 2023-11-21 01:04:14 +00:00
bevy_math Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_mikktspace Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_pbr sort by pipeline then mesh for non transparent passes for massively better batching (#11671) 2024-02-05 22:12:22 +00:00
bevy_ptr Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_reflect Hash stability guarantees (#11690) 2024-02-05 17:05:15 +00:00
bevy_reflect_compile_fail_tests bevy_reflect: Type parameter bounds (#9046) 2024-01-28 16:24:03 +00:00
bevy_render Added remove_indices to Mesh (#11733) 2024-02-06 07:41:01 +00:00
bevy_scene Send SceneInstanceReady only once per scene (#11002) 2024-02-05 13:54:54 +00:00
bevy_sprite Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_tasks Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_text Use warn_once where relevant instead of manually implementing a single warn check (#11693) 2024-02-05 21:05:43 +00:00
bevy_time Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_transform Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_ui Use warn_once where relevant instead of manually implementing a single warn check (#11693) 2024-02-05 21:05:43 +00:00
bevy_utils Hash stability guarantees (#11690) 2024-02-05 17:05:15 +00:00
bevy_window Add name to bevy:🪟:Window (#7650) 2024-02-05 13:35:35 +00:00
bevy_winit Add name to bevy:🪟:Window (#7650) 2024-02-05 13:35:35 +00:00