Hey, I had to write this out so that I don't forget it.
When a bundle adds a system to a dispatcher, it provides a name which is used in system dependency ordering. The system name is effectively API, as external systems that depend on that system specify it as a dependency.
While the number of systems is small, it isn't hard to maintain a few &'static strs. However when there are many systems, if I make a typo, or the name has changed, using &strs defers failure to application startup (runtime) instead of compile time. If we can use constants or a function that returns a derivable system name, it would decrease the maintenance cost for larger applications.
Things to consider:
Systems are generally not public outside of a crate, so we'd have to expose the name some other way.
- What about Systems with generic parameters, such as
AnimationControlSystem<I, T>, where the type parameters are defined by the consumer / application code
Possible useful crates:
Alternatives:
- Do nothing — perhaps the maintenance cost isn't big enough for this effort to be undertaken.
Hey, I had to write this out so that I don't forget it.
When a bundle adds a system to a dispatcher, it provides a name which is used in system dependency ordering. The system name is effectively API, as external systems that depend on that system specify it as a dependency.
While the number of systems is small, it isn't hard to maintain a few
&'static strs. However when there are many systems, if I make a typo, or the name has changed, using&strs defers failure to application startup (runtime) instead of compile time. If we can use constants or a function that returns a derivable system name, it would decrease the maintenance cost for larger applications.Things to consider:
Systems are generally not public outside of a crate, so we'd have to expose the name some other way.AnimationControlSystem<I, T>, where the type parameters are defined by the consumer / application codePossible useful crates:
named_type, but would depend on Include generic type parameter names cjhowe-us/named_type#5typenameAlternatives: