How do you access enum values in Rust?

后端 未结 4 1309
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-11-28 12:02
struct Point {
    x: f64,
    y: f64,
}

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

let my_shape = Shape::Circle(Point { x: 0.0, y: 0.0 },         


        
4条回答
  •  旧时难觅i
    2020-11-28 12:10

    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".

提交回复
热议问题