about summary refs log tree commit diff
path: root/tests/ui/suggestions/option-content-move2.stderr
blob: 5bcbdd711ae77c9d5c6a0fa5e8bb661d99835950 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
error[E0507]: cannot move out of `var`, a captured variable in an `FnMut` closure
  --> $DIR/option-content-move2.rs:11:9
   |
LL |     let mut var = None;
   |         -------   ---- move occurs because `var` has type `Option<NotCopyable>`, which does not implement the `Copy` trait
   |         |
   |         captured outer variable
LL |     func(|| {
   |          -- captured by this `FnMut` closure
LL |         // Shouldn't suggest `move ||.as_ref()` here
LL |         move || {
   |         ^^^^^^^ `var` is moved here
LL |
LL |             var = Some(NotCopyable);
   |             --- variable moved due to use in closure
   |
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
  --> $DIR/option-content-move2.rs:5:12
   |
LL | fn func<F: FnMut() -> H, H: FnMut()>(_: F) {}
   |            ^^^^^^^^^^^^
note: if `NotCopyable` implemented `Clone`, you could clone the value
  --> $DIR/option-content-move2.rs:1:1
   |
LL | struct NotCopyable;
   | ^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
...
LL |             var = Some(NotCopyable);
   |             --- you could clone this value

error[E0507]: cannot move out of `var`, a captured variable in an `FnMut` closure
  --> $DIR/option-content-move2.rs:21:9
   |
LL |     let mut var = None;
   |         -------   ---- move occurs because `var` has type `Option<NotCopyableButCloneable>`, which does not implement the `Copy` trait
   |         |
   |         captured outer variable
LL |     func(|| {
   |          -- captured by this `FnMut` closure
LL |         // Shouldn't suggest `move ||.as_ref()` nor to `clone()` here
LL |         move || {
   |         ^^^^^^^ `var` is moved here
LL |
LL |             var = Some(NotCopyableButCloneable);
   |             --- variable moved due to use in closure
   |
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
  --> $DIR/option-content-move2.rs:5:12
   |
LL | fn func<F: FnMut() -> H, H: FnMut()>(_: F) {}
   |            ^^^^^^^^^^^^

error: aborting due to 2 previous errors

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