我有一个不同长度的let mut stack: Vec<usize> = vec![5, 7, 1]
。在程序的某个时刻,我想将stack
的最后一个元素增加一个。我试过stack.last_mut().unwrap() += 1
(我知道stack
赢了“但是编译器抱怨
error: binary assignment operation `+=` cannot be applied to type `&mut _` [--explain E0368]
--> src/main.rs:3:5
3 |> stack.last_mut().unwrap() += 1;
|> ^^^^^^^^^^^^^^^^^^^^^^^^^
error: invalid left-hand side expression [--explain E0067]
--> src/main.rs:3:5
3 |> stack.last_mut().unwrap() += 1;
|> ^^^^^^^^^^^^^^^^^^^^^^^^^
当然我可以先从堆栈弹出最后一个元素,增加它并再次添加它,但有更简单的方法吗?
答案 0 :(得分:4)
递增前取消引用:
fn main() {
let mut stack = vec![1, 3, 5];
*stack.last_mut().unwrap() += 1;
println!("{:?}", stack);
}