Tom*_*Tom 7 pattern-matching match rust
Rust决定在模式中禁止float文字:完全允许匹配浮点文字值,不应该是#41255.它目前是一个警告,但在将来的版本中将是一个很难的错误.
我的问题是,如何使用以下代码实现等效?:
struct Point {
x: f64,
y: f64,
}
let point = Point {x: 5.0, y: 4.0};
match point {
Point {x: 5.0 , y} => println!("y is {} when x is 5", y), // Causes warning
_ => println!("x is not 5")
}
Run Code Online (Sandbox Code Playgroud)
现在不可能吗?我是否需要改变对模式的看法?还有另一种匹配方式吗?
Sim*_*ead 13
你可以使用比赛守卫:
match point {
Point { x, y } if x == 5.0 => println!("y is {} when x is 5", y),
_ => println!("x is not 5"),
}
Run Code Online (Sandbox Code Playgroud)
这会将责任交给您,因此不会产生任何警告.
浮点相等虽然是一个有趣的主题 ...所以我建议你进一步研究它,因为它可能是bug的来源(我想这是Rust核心团队不想与浮点值匹配的原因) ).
归档时间: |
|
查看次数: |
583 次 |
最近记录: |