Why can I initialize but not assign a &vec![]?

Viewed 105

What is the difference between assign after binding to var and direct assign a &Vec.

let mut v2 = &vec![1,2,3];

let tv = &vec![2,3,4];
v2 = tv;

// different from
// v2 = &vec![2, 3, 4];  // uncomment this will error

println!("{:?}", v2);

borrow checker:

error[E0716]: temporary value dropped while borrowed
  --> examples\demo.rs:27:11
   |
27 |     v2 = &vec![2, 3, 4];
   |           ^^^^^^^^^^^^^- temporary value is freed at the end of this statement
   |           |
   |           creates a temporary which is freed while still in use
...
30 |     println!("{:?}", v2);
   |                      -- borrow later used here
0 Answers
Related