amethyst / amethyst/rfcs

[RFC] System name constants

未关闭
#20 8 条评论 1 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
没有语言数据
星标
32
派生
10
PR 合并指标
30 天内没有已合并 PR

描述

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.

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。