rust 为什么这个“while let”循环是一个无限循环?

wljmcqd8  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(119)

此问题在此处已有答案

In Rust, what's the difference between "shadowing" and "mutability"?(1个答案)
8天前关闭.

#[test]
fn test_looping() {
    let index: usize = 2;
    while let Some(index) = index.checked_sub(1) {
        println!("{}", index);
    }
}

为什么这会创建一个无限循环?我希望indexwhile let表达式覆盖。相反,我必须添加一些额外的行来让它改变index

zour9fqk

zour9fqk1#

let声明了一个新的绑定,隐藏了前一个绑定。它不会修改现有的变量。index最初没有声明为let mut index是一个信号,表明它没有被改变。
要修复它,请写:

#[test]
fn test_looping() {
    let mut index: usize = 2;
    while let Some(i) = index.checked_sub(1) {
        index = i;
        println!("{}", index);
    }
}

字符串

相关问题