我正在尝试编写一个迭代多次的循环,这也会更新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)