我想知道是否可以enum
在Rust中使用常量字符串值创建。在SO上,我发现了一个问题:如何获取枚举作为字符串?这很有帮助,并向我展示了我可以做的工作,以将enum
()的键字符串化(可以.to_sting()
在enum
键上使用并以字符串形式获取名称)。
我要实现的目标:
enum StringEnum {
Hello = "Hello",
World = "World"
}
如果在Rust中有这样的枚举:
enum MyEnum {
Hello,
World
}
Hello
并且World
是枚举变量。在Rust中,将每个变体表示为字符串将不起作用,因为每个变体的字符串(长度不同)将占用不同数量的字节。
Rust中枚举的每个变体都分配给一个整数值。之所以可行,是因为机器整数占用了指定的位数(例如i32
vs i8
),因此每个变体都有相同的大小。
如果希望将枚举转换为字符串,则需要实现method / formatter。最简单的方法是使用strum_macros
板条箱:
#[derive(strum_macros::Display)]
pub enum StringEnum {
Hello,
World
}
fn main() {
let hello: &'static str = StringEnum::Hello.into(); // "Hello"
let world: String = StringEnum::World.to_string(); // "World"
}
我如何以字符串形式获取枚举中提到了其他两种方法?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句