增加 Vec<usize> 的最后一个元素

Pyf*_*sch 2 vector increment rust

我有一个let mut stack: Vec<usize> = vec![5, 7, 1]不同的长度。在程序的某个时刻,我想将 the 的最后一个元素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;
  |>     ^^^^^^^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

当然我可以先从堆栈中弹出最后一个元素,增加它并再次添加它,但有没有更简单的方法?

She*_*ter 5

递增前取消引用:

fn main() {
    let mut stack = vec![1, 3, 5];
    *stack.last_mut().unwrap() += 1;
    println!("{:?}", stack);
}
Run Code Online (Sandbox Code Playgroud)

  • 堆栈也需要是可变的。(显然,您的代码是这样做的;我只是指出问题的变化) (2认同)