error[E0505]: cannot move out of `x` because it is borrowed
  --> $DIR/issue-6801.rs:19:13
   |
LL |       let sq =  || { *x * *x };
   |                 --    - borrow occurs due to use in closure
   |                 |
   |                 borrow of `x` occurs here
LL | 
LL |       twice(x);
   |             ^ move out of `x` occurs here
LL |       invoke(sq);
   |              -- borrow later used here

error: aborting due to previous error

For more information about this error, try `rustc --explain E0505`.
