如何匹配Rust中的struct字段?

时间:2016-12-30 04:04:44

标签: rust

Rust可以匹配struct字段吗?例如,此代码:

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

let point = Point { x: false, y: true };

match point {
    point.x => println!("x is true"),
    point.y => println!("y is true"),
}

应该导致:

y is true

2 个答案:

答案 0 :(得分:24)

  

Rust可以匹配struct字段吗?

"Destructuring structs"章节的Rust书中对此进行了描述。

match point {
    Point { x: true, .. } => println!("x is true"),
    Point { y: true, .. } => println!("y is true"),
    _ => println!("something else"),
}

答案 1 :(得分:6)

您的问题中提供的语法没有任何意义;您似乎只想使用正常的if语句:

if point.x { println!("x is true") }
if point.y { println!("y is true") }

我强烈建议您重新阅读The Rust Programming Language,特别是

上的章节

一旦你阅读了它,就应该清楚point.x不是一个模式,所以不能在匹配臂的左侧使用它。