Add by-value captured variable note on second use.

This commit adds a note that was present in the AST borrow checker when
closures are invoked more than once and have captured variables
by-value.
This commit is contained in:
David Wood 2018-10-11 01:19:55 +02:00
parent aa701154f0
commit 375645abb8
No known key found for this signature in database
GPG key ID: 01760B4F9F53F154
5 changed files with 140 additions and 47 deletions

View file

@ -1,11 +0,0 @@
error[E0382]: use of moved value: `debug_dump_dict`
--> $DIR/issue-42065.rs:21:5
|
LL | debug_dump_dict();
| --------------- value moved here
LL | debug_dump_dict();
| ^^^^^^^^^^^^^^^ value used here after move
error: aborting due to previous error
For more information about this error, try `rustc --explain E0382`.

View file

@ -0,0 +1,18 @@
error[E0382]: use of moved value: `f`
--> $DIR/issue-12127.rs:21:9
|
LL | f();
| - value moved here
LL | f();
| ^ value used here after move
|
note: closure cannot be invoked more than once because it moves the variable `x` out of its environment
--> $DIR/issue-12127.rs:18:39
|
LL | let f = to_fn_once(move|| do_it(&*x));
| ^
= note: move occurs because `f` has type `[closure@$DIR/issue-12127.rs:18:24: 18:41 x:std::boxed::Box<isize>]`, which does not implement the `Copy` trait
error: aborting due to previous error
For more information about this error, try `rustc --explain E0382`.

View file

@ -1,11 +0,0 @@
error[E0382]: use of moved value: `tick`
--> $DIR/unboxed-closures-infer-fnonce-call-twice.rs:20:5
|
LL | tick();
| ---- value moved here
LL | tick(); //~ ERROR use of moved value: `tick`
| ^^^^ value used here after move
error: aborting due to previous error
For more information about this error, try `rustc --explain E0382`.

View file

@ -1,11 +0,0 @@
error[E0382]: use of moved value: `tick`
--> $DIR/unboxed-closures-infer-fnonce-move-call-twice.rs:20:5
|
LL | tick();
| ---- value moved here
LL | tick(); //~ ERROR use of moved value: `tick`
| ^^^^ value used here after move
error: aborting due to previous error
For more information about this error, try `rustc --explain E0382`.