我想使用Rust中匹配语句的条件来执行0=a和x2B;5. 想做什么

我想使用Rust中匹配语句的条件来执行0=a和x2B;5. 想做什么,rust,rust-cargo,Rust,Rust Cargo,我想使用Rust的match语句在任意范围内和其他情况下对变量进行不同的处理。在这种情况下,代码将如下所示 适用规范 //idx是usize变量 //num使用variabel 让res:Option=match idx{ 1..=num-5=>{ Some(func()) }, _=>没有, }; 我收到了一个错误。 无法在模式中引用运行时值。您也不能进行操作 改用常量 const num :i32 = 19 - 5; let res: Option<f64> = match

我想使用Rust的match语句在任意范围内和其他情况下对变量进行不同的处理。在这种情况下,代码将如下所示

适用规范
//idx是usize变量
//num使用variabel
让res:Option=match idx{
1..=num-5=>{
Some(func())
},
_=>没有,
};
我收到了一个错误。
无法在模式中引用运行时值。您也不能进行操作

改用常量

const num :i32 = 19 - 5;

let res: Option<f64> = match idx {
    1..=num => {
        Some(func())
    },
    _ => None,
};
const num:i32=19-5;
让res:Option=match idx{
1..=num=>{
Some(func())
},
_=>没有,
};

您可以检查火柴护盾上的动态范围:

fn main(){
设idx=6;
设num=15;
让res=匹配idx{
n如果(1..=num-5).包含(&n)=>Some(“foo”),
_=>没有,
};
println!(“{:?}”,res);
}

Uhm,编译器似乎没有真正理解它。顺便说一句,这只是一个实验性功能。在更新的示例中,删除
Some(func())
之后的逗号。更新中的错误与添加到文章中的代码不符。我已经恢复了编辑,因为它似乎没有给原始问题添加任何内容。如果你在解答中遇到了问题,考虑在下面的评论中提出答案或者问一个新的问题——编辑问题应该被用来回答评论,增加对原始问题的澄清或细节。我想这可能是重复的。答案是可以的。但我认为这并不适用。我想num会随着运行时间而变化。谢谢你的回答。我在更新部分对其进行了修改,收到了更多错误。
const num :i32 = 19 - 5;

let res: Option<f64> = match idx {
    1..=num => {
        Some(func())
    },
    _ => None,
};