重新绑定在for循环内不起作用的变量

Ror*_*ory 2 scope rust

我正在尝试编写一个迭代多次的循环,这也会更新Rust中的变量.

fn get_next(input: &[u8]) -> (u8, &[u8]) {
    (input[0], &input[1..])
}

fn main() {
    let slice: &[u8] = &vec![1, 2, 3, 4];
    for _ in 0..4 {
        let (mynum, slice) = get_next(slice);
        println!("Here's mynum {} slice {:?}", mynum, slice);
    }
}
Run Code Online (Sandbox Code Playgroud)

代码在Rust Playground上.

这是输出:

Here's mynum 1 slice [2, 3, 4]
Here's mynum 1 slice [2, 3, 4]
Here's mynum 1 slice [2, 3, 4]
Here's mynum 1 slice [2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

我希望slice每次更改变量以指向下一个子切片.如何才能slice更新变量?

这是一个最小的例子,如果我真的u8在片中迭代,我会做不同的事情.

小智 6

您正在定义一个影响外部变量的新变量.也许:

let mut slice: &[u8] = &vec![1, 2, 3, 4];
for _ in 0..4 {
    let (mynum, slice_) = get_next(slice);
    slice = slice_;
    println!("Here's mynum {} slice {:?}", mynum, slice);
}
Run Code Online (Sandbox Code Playgroud)