【发布时间】:2021-03-10 09:40:14
【问题描述】:
我想知道是否可以在 Rust 中使用常量字符串值创建 enum?
我发现了上一个问题:How do I get an enum as a string?,它显示了一种解决方法,我可以使用它来对enum 的变体进行字符串化(我可以在enum 变体上使用.to_string() 并将它们的名称作为字符串获取)。
这个问题很有帮助,但这是我想要实现的目标:
enum StringEnum {
Hello = "Hello",
World = "World"
}
【问题讨论】:
-
Enum 派生自 enumerate,因此它总是希望每个条目都有一个
isize。 -
@C14L 所以这是不可能的,因为字符串可以有不同的大小,每个
enum值必须是相同的大小。我说的对吗? -
正确。在您链接的答案中,提到了一个似乎可以满足您要求的 Crate:strum_macros
-
枚举的鉴别器在 Rust 中始终是整数类型。实现一个将字符串值返回为
&'static str的函数或在链接任务中实现Display特征是可行的方法。您可以使用宏来减少样板。 -
@C14L 是的,我看到了这个依赖,但我只是在学习 Rust,所以我不想使用依赖。无论如何,谢谢你的回答。如果您想添加带有解释的答案,我会接受您的答案。