2016-08-01 3 views
1

私はlet mut stack: Vec<usize> = vec![5, 7, 1]の長さが可変です。プログラムのある時点で、stackの最後の要素を1つ増やしたいと考えています。私は(私はstackは空ではありません知っている)stack.last_mut().unwrap() += 1を試みたが、コンパイラはVecの最後の要素をインクリメント<usize>

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; 
    |>  ^^^^^^^^^^^^^^^^^^^^^^^^^ 

はもちろん、私は最初、スタックから最後の要素をポップそれをインクリメントし、再度追加することができ不平を言うが、そこは簡単です方法?インクリメント前

答えて

4

逆参照:

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

も可変する必要がスタック。 (あなたのコードはこれを行います、明らかに、私はちょうど質問からの変更を指摘しています) – Kevin

関連する問題