簡體   English   中英

我可以在 Rust 中創建字符串枚舉嗎?

[英]Can I create string enum in Rust?

我想知道是否可以在 Rust 中創建具有常量字符串值的enum

我發現了這個先前的問題: 如何將枚舉作為字符串? 它顯示了一種解決方法,我可以使用它來對enum的變體進行字符串化(我可以在enum變體上使用.to_string()並將它們的名稱作為字符串獲取)。

這個問題很有幫助,但這是我想要實現的目標:

enum StringEnum {
    Hello = "Hello",
    World = "World"
}

如果你在 Rust 中有這樣的枚舉:

enum MyEnum {
    Hello,
    World
}

HelloWorld是枚舉變體 在 Rust 中,將每個變體表示為字符串是行不通的,因為每個變體的字符串長度不同,占用的字節數也不同。

Rust 中枚舉的每個變體都分配給單個 integer 值。 這是因為機器 integer 占用指定數量的位(例如i32i8 ),因此每個變體具有相同的大小。

如果您希望能夠將枚舉轉換為字符串,則需要實現方法/格式化程序。 最簡單的方法是使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM