How do you access enum values in Rust?

As you are only interested in matching one of the variants, you can use an if let expression instead of a match:

struct Point {
    x: f64,
    y: f64,
}

enum Shape {
    Circle(Point, f64),
    Rectangle(Point, Point),
}

fn main() {
    let my_shape = Shape::Circle(Point { x: 0.0, y: 0.0 }, 10.0);

    if let Shape::Circle(_, radius) = my_shape {
        println!("value: {}", radius);
    }
}

This means “if my_shape can be destructured into a Circle, do nothing with the first index, but bind the value of the second index to radius“.

Leave a Comment