error[E0505]: cannot move out of `v` because it is borrowed --> $DIR/drop-live-upvar.rs:19:10 | LL | let v = vec![1, 2, 3]; | - binding `v` declared here LL | let x = NeedsDrop(&v); | -- borrow of `v` occurs here ... LL | drop(v); | ^ move out of `v` occurs here LL | LL | } | - borrow might be used here, when `c` is dropped and runs the destructor for coroutine | help: consider cloning the value if the performance cost is acceptable | LL | let x = NeedsDrop(&v.clone()); | ++++++++ error: aborting due to 1 previous error For more information about this error, try `rustc --explain E0505`.