【发布时间】:2018-05-16 13:41:47
【问题描述】:
实现这一目标的最简单方法是什么?
enum E {
A,
B,
C,
}
// Should return "A" for 0, "B" for 1 and "C" for 2
fn convert(i: u32) -> str {
// ???
}
【问题讨论】:
-
它永远无法返回
str,因为它没有大小。它需要是String或&str。 -
不要像这样使用
transmute! 这是非常不安全的,并且可能会导致未定义的行为。 Rust 中的枚举不同于 C 中的枚举:它们不得具有编译器未定义的标记值。如果你不完全理解 Rust 中不安全编码的规则,你不应该使用unsafe代码。 -
@2080 如果
t超出范围,这将会爆炸。您最好使用match语句并处理每种情况。 -
或者,您可以首先让一个宏生成您的
enum,同时创建一个to_str方法。