我想使用 Rust 中的 match 语句的条件来执行“0..=a+5”

BoK*_*enU 9 rust

我想使用 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)

操场