Can I create string enum?

If you have an enum like this:

enum HelloWorld {
    Hello,
    World
}

Hello and World are enum variants. Every variant of an enum is assigned to a single integer value. This is known as the discriminant. Currently, discriminants are only allowed to be integers, not arbitrary types like &'static str, although that may change in the future.

If you want to be able to convert your enum to a string, you can write a method that does this manually:

impl HelloWorld {
    fn as_str(&self) -> &'static str {
        match self {
            HelloWorld::Hello => "Hello",
            HelloWorld::World => "World"
        }
    }
}

Or you can have this done for you with the 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"
}

There are a couple other methods mentioned in How do I get an enum as a string?

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)