bevy/crates/bevy_app/src
JoJoJet c43295af80 Simplify design for *Labels (#4957)
# Objective

- Closes #4954 
- Reduce the complexity of the `{System, App, *}Label` APIs.

## Solution

For the sake of brevity I will only refer to `SystemLabel`, but everything applies to all of the other label types as well.

- Add `SystemLabelId`, a lightweight, `copy` struct.
- Convert custom types into `SystemLabelId` using the trait `SystemLabel`.

## Changelog

- String literals implement `SystemLabel` for now, but this should be changed with #4409 .

## Migration Guide

- Any previous use of `Box<dyn SystemLabel>` should be replaced with `SystemLabelId`.
- `AsSystemLabel` trait has been modified.
    - No more output generics.
    - Method `as_system_label` now returns `SystemLabelId`, removing an unnecessary level of indirection.
- If you *need* a label that is determined at runtime, you can use `Box::leak`. Not recommended.

## Questions for later

* Should we generate a `Debug` impl along with `#[derive(*Label)]`?
* Should we rename `as_str()`?
* Should we remove the extra derives (such as `Hash`) from builtin `*Label` types?
* Should we automatically derive types like `Clone, Copy, PartialEq, Eq`?
* More-ergonomic comparisons between `Label` and `LabelId`.
* Move `Dyn{Eq, Hash,Clone}` somewhere else.
* Some API to make interning dynamic labels easier.
* Optimize string representation
    * Empty string for unit structs -- no debug info but faster comparisons
    * Don't show enum types -- same tradeoffs as asbove.
2022-07-14 18:23:01 +00:00
..
app.rs Simplify design for *Labels (#4957) 2022-07-14 18:23:01 +00:00
ci_testing.rs run examples in wasm in CI (#4818) 2022-06-06 20:22:51 +00:00
lib.rs Fix formatting, spelling, phrasing and consistency (#4275) 2022-04-05 22:36:02 +00:00
plugin_group.rs Remove the dependency cycles (#5171) 2022-07-04 13:04:18 +00:00
plugin.rs Fix formatting, spelling, phrasing and consistency (#4275) 2022-04-05 22:36:02 +00:00
schedule_runner.rs Fix formatting, spelling, phrasing and consistency (#4275) 2022-04-05 22:36:02 +00:00