1error[E0507]: cannot move out of `*a` which is behind a shared reference 2 --> $DIR/move-errors.rs:6:13 3 | 4LL | let b = *a; 5 | ^^ 6 | | 7 | move occurs because `*a` has type `A`, which does not implement the `Copy` trait 8 | help: consider borrowing here: `&*a` 9 10error[E0508]: cannot move out of type `[A; 1]`, a non-copy array 11 --> $DIR/move-errors.rs:12:13 12 | 13LL | let b = a[0]; 14 | ^^^^ 15 | | 16 | cannot move out of here 17 | move occurs because `a[_]` has type `A`, which does not implement the `Copy` trait 18 | help: consider borrowing here: `&a[0]` 19 20error[E0507]: cannot move out of `**r` which is behind a shared reference 21 --> $DIR/move-errors.rs:19:13 22 | 23LL | let s = **r; 24 | ^^^ 25 | | 26 | move occurs because `**r` has type `A`, which does not implement the `Copy` trait 27 | help: consider borrowing here: `&**r` 28 29error[E0507]: cannot move out of an `Rc` 30 --> $DIR/move-errors.rs:27:13 31 | 32LL | let s = *r; 33 | ^^ 34 | | 35 | move occurs because value has type `A`, which does not implement the `Copy` trait 36 | help: consider borrowing here: `&*r` 37 38error[E0508]: cannot move out of type `[A; 1]`, a non-copy array 39 --> $DIR/move-errors.rs:32:13 40 | 41LL | let a = [A("".to_string())][0]; 42 | ^^^^^^^^^^^^^^^^^^^^^^ 43 | | 44 | cannot move out of here 45 | move occurs because value has type `A`, which does not implement the `Copy` trait 46 | help: consider borrowing here: `&[A("".to_string())][0]` 47 48error[E0507]: cannot move out of `a.0` which is behind a shared reference 49 --> $DIR/move-errors.rs:38:16 50 | 51LL | let A(s) = *a; 52 | - ^^ help: consider borrowing here: `&*a` 53 | | 54 | data moved here 55 | move occurs because `s` has type `String`, which does not implement the `Copy` trait 56 57error[E0509]: cannot move out of type `D`, which implements the `Drop` trait 58 --> $DIR/move-errors.rs:44:19 59 | 60LL | let C(D(s)) = c; 61 | - ^ cannot move out of here 62 | | 63 | data moved here 64 | move occurs because `s` has type `String`, which does not implement the `Copy` trait 65 66error[E0507]: cannot move out of `*a` which is behind a shared reference 67 --> $DIR/move-errors.rs:51:9 68 | 69LL | b = *a; 70 | ^^ move occurs because `*a` has type `A`, which does not implement the `Copy` trait 71 72error[E0508]: cannot move out of type `[B; 1]`, a non-copy array 73 --> $DIR/move-errors.rs:74:11 74 | 75LL | match x[0] { 76 | ^^^^ 77 | | 78 | cannot move out of here 79 | help: consider borrowing here: `&x[0]` 80LL | 81LL | B::U(d) => (), 82 | - data moved here 83LL | B::V(s) => (), 84 | - ...and here 85 | 86 = note: move occurs because these variables have types that don't implement the `Copy` trait 87 88error[E0509]: cannot move out of type `D`, which implements the `Drop` trait 89 --> $DIR/move-errors.rs:83:11 90 | 91LL | match x { 92 | ^ cannot move out of here 93... 94LL | B::U(D(s)) => (), 95 | - 96 | | 97 | data moved here 98 | move occurs because `s` has type `String`, which does not implement the `Copy` trait 99 100error[E0509]: cannot move out of type `D`, which implements the `Drop` trait 101 --> $DIR/move-errors.rs:92:11 102 | 103LL | match x { 104 | ^ cannot move out of here 105... 106LL | (D(s), &t) => (), 107 | - 108 | | 109 | data moved here 110 | move occurs because `s` has type `String`, which does not implement the `Copy` trait 111 112error[E0507]: cannot move out of `*x.1` which is behind a shared reference 113 --> $DIR/move-errors.rs:92:11 114 | 115LL | match x { 116 | ^ 117... 118LL | (D(s), &t) => (), 119 | - 120 | | 121 | data moved here 122 | move occurs because `t` has type `String`, which does not implement the `Copy` trait 123 124error[E0509]: cannot move out of type `F`, which implements the `Drop` trait 125 --> $DIR/move-errors.rs:102:11 126 | 127LL | match x { 128 | ^ cannot move out of here 129LL | 130LL | F(s, mut t) => (), 131 | - ----- ...and here 132 | | 133 | data moved here 134 | 135 = note: move occurs because these variables have types that don't implement the `Copy` trait 136 137error[E0507]: cannot move out of `x.0` which is behind a shared reference 138 --> $DIR/move-errors.rs:110:11 139 | 140LL | match *x { 141 | ^^ help: consider borrowing here: `&*x` 142LL | 143LL | Ok(s) | Err(s) => (), 144 | - 145 | | 146 | data moved here 147 | move occurs because `s` has type `String`, which does not implement the `Copy` trait 148 149error: aborting due to 14 previous errors 150 151Some errors have detailed explanations: E0507, E0508, E0509. 152For more information about an error, try `rustc --explain E0507`. 153