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

为什么这会造成无限循环?我预计while let表达式会覆盖index.取而代之的是,我必须添加几行额外的行才能将其设置为Mutations index.

推荐答案

let声明一个新的绑定,跟踪前一个绑定.它不会修改现有变量.index最初没有被宣布为let mut index是一个迹象,表明它没有发生Mutations .

要修复它,请写下:

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

Rust相关问答推荐

如何在tauri—leptos应用程序中监听后端值的变化?""

在没有引用计数或互斥锁的情况下,可以从Rust回调函数内的封闭作用域访问变量吗?

为什么实例方法可以像Rust中的静态方法一样被调用?

如何在 struct 的自定义序列化程序中使用serde序列化_WITH

如何计算迭代器适配器链中过滤的元素的数量

在IntoIter上调用.by_ref().Take().rev()时会发生什么情况

rust中的库插件管理器,现在是否可行?

什么时候使用FuturesOrdered?

对reqwest提供的这种嵌套JSON struct 进行反序列化

为什么`tokio::main`可以直接使用而不需要任何导入?

Rust Axum 框架 - 解包安全吗?

Rust 1.70 中未找到 Trait 实现

没有明确地说return会产生错误:match arms have incompatible types

在 Rust 中,Weak 如何知道内部值何时被删除?

rust 中不同类型的工厂函数

以 `static` 为前缀的闭包是什么意思?我什么时候使用它?

Rust - 在线程之间不安全地共享没有互斥量的可变数据

将 (T, ()) 转换为 T 安全吗?

令人困惑的错误消息? (解包运算符)

为什么一个整型变量赋值给另一个变量后仍然可以使用?