rustHow to create enum from string in Rust
Enums in Rust can be created from strings using the FromStr
trait. This trait is implemented for the str
type, allowing us to convert a string into an enum. To do this, we must first define the enum and implement the FromStr
trait for it. Then, we can use the str::parse
method to convert a string into the enum.
use std::str::FromStr;
#[derive(Debug)]
enum Color {
Red,
Green,
Blue,
}
impl FromStr for Color {
type Err = ();
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"Red" => Ok(Color::Red),
"Green" => Ok(Color::Green),
"Blue" => Ok(Color::Blue),
_ => Err(()),
}
}
}
fn main() {
let color = "Green".parse::<Color>().unwrap();
println!("{:?}", color);
}
Output example:
Green
Explanation
The FromStr
trait is implemented for the str
type, allowing us to convert a string into an enum. To do this, we must first define the enum and implement the FromStr
trait for it. Then, we can use the str::parse
method to convert a string into the enum. In the example above, we define an enum Color
with three variants, and implement the FromStr
trait for it. We then use the str::parse
method to convert the string "Green" into the Color
enum.
Helpful links
Related
- How to use enum as hashmap key in Rust
- How to loop through enum in Rust
- How to use fmt for enum in Rust
- How to compare enum in Rust
- How to print enum in Rust
- How to serialize enum in Rust
- How to lowercase enum in Rust
- Get enum value by index in Rust
- How to get all enum values in Rust
- Using enum in json in Rust
More of Rust
- How to get all values from a Rust HashMap?
- How to convert the keys of a Rust HashMap to a vector?
- How to use regex to match a double quote in Rust?
- How to get an entry from a HashSet in Rust?
- How to insert an element into a Rust HashMap if it does not already exist?
- How to create a HashMap of pointers in Rust?
- How to yield a thread in Rust?
- How to use regex captures in Rust?
- How to perform matrix operations in Rust?
- How to replace a capture group using Rust regex?
See more codes...