amethyst / amethyst/rfcs

[RFC] System name constants

Offen
#20 8 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Keine Sprachdaten
Sterne
32
Forks
10
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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 str`s. However when there are many systems, if I make a typo, or the name has changed, using `&str`s 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:

* `System`s 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`, where the type parameters are defined by the consumer / application code

Possible useful crates:

* [`named_type`](https://github.com/cjhowe7/named_type/), but would depend on https://github.com/cjhowe7/named_type/issues/5
* [`typename`](https://crates.io/crates/typename)

Alternatives:

* Do nothing — perhaps the maintenance cost isn't big enough for this effort to be undertaken.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.