首页 > 解决方案 > 为什么每次迭代后变量的值都没有更新?

问题描述

我有一个大数组,我正在使用它进行切片split_at()

let (left, right) = large_array.split_at(i);

我正在做一些操作left,然后继续right在一个while循环中切片,直到right为空。

// test vector
let v: Vec<u8> = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let (left, right) = v.split_at(1); // left = [1], right = [2,3,4 ... 10]
let j: u8 = left[0];
    
for i in 1..10 {
    println!("{} {}", j, right.len()); // prints "1 9" on all iterations
    let (left, right) = right.split_at(1);
    let j: u8 = left[0];
    println!("{} {}", j, right.len()); // prints "2 8" on all iterations
}

锈操场

虽然在第一次迭代期间长度right从 9 变为 8,但在第二次迭代中它又恢复为 9。这是什么原因造成的?

标签: rust

解决方案


推荐阅读