gpt4 book ai didi

rust - 如何在匹配中使用表达式作为条件?

转载 作者:行者123 更新时间:2023-12-02 02:04:27 25 4
gpt4 key购买 nike

如何在匹配臂中使用表达式?我想处理 100 等于 75 + 25 的情况。

fn main() {
match 100 {
75 + 25 => println!("100"),
// ^ expected one of `...`, `..=`, `..`, `=>`, `if`, or `|`
_ => unreachable!()
};
}

最佳答案

目前,如果不在 nightly 编译器上使用不稳定的功能,则无法执行此操作。

你可以写的是:

fn main() {
const A: i32 = 75 + 25;
match 100 {
A => println!("100"),
_ => unreachable!()
};
}

或作为 @Ry您可以使用 guard 的评论:

fn main() {
match 100 {
x if x == 75 + 25 => println!("100"),
_ => unreachable!()
};
}

但是,如果我在守卫中放置一个复杂的表达式并且它位于性能关键区域,我会小心检查编译器是否正确地将它提取为常量。 (如果你限制自己使用常量函数应该没问题......)

支持您想要的东西的新功能称为 inline-const 并且正在跟踪 here , 你可以找到一些细节 here .如果您愿意在夜间编译器上使用不稳定的功能,那么您现在可以这样做:

#![feature(inline_const)]
fn main() {
match 100 {
const {75 + 25} => println!("100"),
_ => unreachable!()
};
}

当/如果它变得稳定,您可以删除启用不稳定功能的 feature 行。

关于rust - 如何在匹配中使用表达式作为条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68629531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com