如何匹配Rust中的struct字段?

问题描述 投票:10回答:2

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
rust
2个回答
25
投票

Rust可以匹配struct字段吗?

它在"Destructuring structs"章节的Rust书中有所描述。

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

7
投票

你问题中提出的语法没有任何意义;看来你只想使用正常的if语句:

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.