我正在尝试编写一个迭代多次的循环,它还会更新 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);
}
}
代码在 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]
我希望每次更改 slice
变量以指向下一个子切片。如何获取要更新的 slice
变量?
这是一个最小的示例,如果我真的在切片中迭代 u8
,我会采用不同的方式。
最佳答案
您正在定义一个新变量来覆盖外部变量。也许:
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);
}
关于scope - 重新绑定(bind)在 for 循环中不起作用的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38396093/