我想使用 Rust 的match
语句在变量处于任意范围和其他情况下以不同的方式处理变量。在这种情况下,代码将如下所示:
// idx is usize variable
// num is usize variabel
let res: Option<f64> = match idx {
1..=num-5 => {
Some(func())
},
_ => None,
};
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:
error: expected one of `::`, `=>`, `if`, or `|`, found `-`
--> src/features.rs:34:22
|
34 | 1..=num-5 => Some(func()),
| ^ expected one of `::`, `=>`, `if`, or `|`
Run Code Online (Sandbox Code Playgroud)
Net*_*ave 11
您可以通过比赛卫检查动态范围:
fn main() {
let idx = 6;
let num = 15;
let res = match idx {
n if (1..=num - 5).contains(&n) => Some("foo"),
_ => None,
};
println!("{:?}", res);
}
Run Code Online (Sandbox Code Playgroud)