enum
Rustで一定の文字列値を使用して作成することは可能でしょうか。SOで、私はこの質問を見つけました:列挙型を文字列として取得するにはどうすればよいですか?これは役に立ち、のキーを文字列enum
化するため.to_sting()
に実行できる回避策の種類を示しています(キーで使用しenum
、名前を文字列として取得できます)。
私が達成したいこと:
enum StringEnum {
Hello = "Hello",
World = "World"
}
Rustにこのような列挙型がある場合:
enum MyEnum {
Hello,
World
}
Hello
とWorld
は列挙型のバリアントです。Rustでは、各バリアントを文字列として表すことは機能しません。これは、各バリアントの文字列の長さが異なるため、使用するバイト数が異なるためです。
Rustの列挙型のすべてのバリアントは、単一の整数値に割り当てられます。これが機能するのは、マシンの整数が指定されたビット数(i32
vsi8
など)を占めるため、すべてのバリアントのサイズが同じになるためです。
列挙型を文字列に変換できるようにする場合は、メソッド/フォーマッターを実装する必要があります。これを行う最も簡単な方法は、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]
コメントを追加