我正在研究代码出现后的生 rust 问题,我遇到了一个我无法解决的问题。
一般来说,我理解stack1
被借用为可变的问题(因为pop),我想在print_stack
中使用不可变的。
如果我想打印stacks
的状态,那么我应该如何做呢?
抱歉,如果这只是一个愚蠢的问题,但我真的卡住了。我试过克隆这个物体,但没有成功。
fn print_stack(stacks: &Vec<Vec<usize>>) -> () {
// some logic to print the stacks.
// for now use just println!
println!("{:?}", stacks);
}
fn main() {
let mut stacks: Vec<Vec<usize>> = vec![vec![], vec![1,2,3,4]];
let stack1 = stacks.get_mut(1).unwrap();
while let Some(item) = stack1.pop() {
// something with item
// i would like to print every step.
print_stack(&stacks);
}
}
1条答案
按热度按时间s3fp2yjn1#
在循环期间保持
stack1
的borrow使得不可能获取对&stacks
的第二个引用,因为&mut
引用是唯一的。解决这个问题的一种方法是在每次迭代时获取新的stacks[1]
,这样在print_stack
调用期间就不会有借用。