0

Suppose, I have the following enum type in Rust.

enum Expr {
    Null,
    Add(i32, i32),
    Sub(i32, i32),
    Mul(i32, i32),
    Div { dividend: i32, divisor: i32 },
    Val(i32),
}

I want to enumerate each element using a for loop.

Is it possible?


Elements can be enumerated using an extra array.

enum Expr {
    Null,
    Add(i32, i32),
    Sub(i32, i32),
    Mul(i32, i32),
    Div { dividend: i32, divisor: i32 },
    Val(i32),
}

fn main() {
    let expressions = [
        Expr::Null,
        Expr::Add(3, 4),
        Expr::Sub(10, 5),
        Expr::Mul(6, 2),
        Expr::Div { dividend: 15, divisor: 3 },
        Expr::Val(42),
    ];

    for expr in &expressions {
        match expr {
            Expr::Null => println!("Null expression"),
            Expr::Add(a, b) => println!("Addition: {} + {}", a, b),
            Expr::Sub(a, b) => println!("Subtraction: {} - {}", a, b),
            Expr::Mul(a, b) => println!("Multiplication: {} * {}", a, b),
            Expr::Div { dividend, divisor } => println!("Division: {} / {}", dividend, divisor),
            Expr::Val(value) => println!("Value: {}", value),
        }
    }
}

However, I don't want to use an extra array.

Is that possible?

user366312
  • 16,949
  • 65
  • 235
  • 452

0 Answers0