[英]Can I create string enum in Rust?
我想知道是否可以在 Rust 中創建具有常量字符串值的enum
?
我發現了這個先前的問題: 如何將枚舉作為字符串? 它顯示了一種解決方法,我可以使用它來對enum
的變體進行字符串化(我可以在enum
變體上使用.to_string()
並將它們的名稱作為字符串獲取)。
這個問題很有幫助,但這是我想要實現的目標:
enum StringEnum {
Hello = "Hello",
World = "World"
}
如果你在 Rust 中有這樣的枚舉:
enum MyEnum {
Hello,
World
}
Hello
和World
是枚舉變體。 在 Rust 中,將每個變體表示為字符串是行不通的,因為每個變體的字符串長度不同,占用的字節數也不同。
Rust 中枚舉的每個變體都分配給單個 integer 值。 這是因為機器 integer 占用指定數量的位(例如i32
與i8
),因此每個變體具有相同的大小。
如果您希望能夠將枚舉轉換為字符串,則需要實現方法/格式化程序。 最簡單的方法是使用strum_macros
crate:
#[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"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.