1 error: borrow of moved value
2 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:29:9
4 LL | let a @ ref b = U;
7 | | value borrowed here after move
8 | value moved into `a` here
9 | move occurs because `a` has type `U` which does not implement the `Copy` trait
11 error: borrow of moved value
12 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:31:9
14 LL | let a @ (mut b @ ref mut c, d @ ref e) = (U, U);
15 | -^^^^^^^^^^^^---------^^^^^^-----^
17 | | | value borrowed here after move
18 | | value borrowed here after move
19 | value moved into `a` here
20 | move occurs because `a` has type `(U, U)` which does not implement the `Copy` trait
22 error: borrow of moved value
23 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:31:14
25 LL | let a @ (mut b @ ref mut c, d @ ref e) = (U, U);
28 | | value borrowed here after move
29 | value moved into `b` here
30 | move occurs because `b` has type `U` which does not implement the `Copy` trait
32 error: borrow of moved value
33 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:31:33
35 LL | let a @ (mut b @ ref mut c, d @ ref e) = (U, U);
38 | | value borrowed here after move
39 | value moved into `d` here
40 | move occurs because `d` has type `U` which does not implement the `Copy` trait
42 error: borrow of moved value
43 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:38:9
45 LL | let a @ [ref mut b, ref c] = [U, U];
46 | -^^^^---------^^-----^
48 | | | value borrowed here after move
49 | | value borrowed here after move
50 | value moved into `a` here
51 | move occurs because `a` has type `[U; 2]` which does not implement the `Copy` trait
53 error: borrow of moved value
54 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:41:9
56 LL | let a @ ref b = u();
59 | | value borrowed here after move
60 | value moved into `a` here
61 | move occurs because `a` has type `U` which does not implement the `Copy` trait
63 error: borrow of moved value
64 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:44:9
66 LL | let a @ (mut b @ ref mut c, d @ ref e) = (u(), u());
67 | -^^^^^^^^^^^^---------^^^^^^-----^
69 | | | value borrowed here after move
70 | | value borrowed here after move
71 | value moved into `a` here
72 | move occurs because `a` has type `(U, U)` which does not implement the `Copy` trait
74 error: borrow of moved value
75 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:44:14
77 LL | let a @ (mut b @ ref mut c, d @ ref e) = (u(), u());
80 | | value borrowed here after move
81 | value moved into `b` here
82 | move occurs because `b` has type `U` which does not implement the `Copy` trait
84 error: borrow of moved value
85 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:44:33
87 LL | let a @ (mut b @ ref mut c, d @ ref e) = (u(), u());
90 | | value borrowed here after move
91 | value moved into `d` here
92 | move occurs because `d` has type `U` which does not implement the `Copy` trait
94 error: borrow of moved value
95 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:51:9
97 LL | let a @ [ref mut b, ref c] = [u(), u()];
98 | -^^^^---------^^-----^
100 | | | value borrowed here after move
101 | | value borrowed here after move
102 | value moved into `a` here
103 | move occurs because `a` has type `[U; 2]` which does not implement the `Copy` trait
105 error: borrow of moved value
106 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:56:9
108 LL | a @ Some(ref b) => {}
111 | | value borrowed here after move
112 | value moved into `a` here
113 | move occurs because `a` has type `Option<U>` which does not implement the `Copy` trait
115 error: borrow of moved value
116 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:61:9
118 LL | a @ Some((mut b @ ref mut c, d @ ref e)) => {}
119 | -^^^^^^^^^^^^^^^^^---------^^^^^^-----^^
121 | | | value borrowed here after move
122 | | value borrowed here after move
123 | value moved into `a` here
124 | move occurs because `a` has type `Option<(U, U)>` which does not implement the `Copy` trait
126 error: borrow of moved value
127 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:61:19
129 LL | a @ Some((mut b @ ref mut c, d @ ref e)) => {}
132 | | value borrowed here after move
133 | value moved into `b` here
134 | move occurs because `b` has type `U` which does not implement the `Copy` trait
136 error: borrow of moved value
137 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:61:38
139 LL | a @ Some((mut b @ ref mut c, d @ ref e)) => {}
142 | | value borrowed here after move
143 | value moved into `d` here
144 | move occurs because `d` has type `U` which does not implement the `Copy` trait
146 error: borrow of moved value
147 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:71:9
149 LL | mut a @ Some([ref b, ref mut c]) => {}
150 | -----^^^^^^^^^-----^^---------^^
152 | | | value borrowed here after move
153 | | value borrowed here after move
154 | value moved into `a` here
155 | move occurs because `a` has type `Option<[U; 2]>` which does not implement the `Copy` trait
157 error: borrow of moved value
158 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:77:9
160 LL | a @ Some(ref b) => {}
163 | | value borrowed here after move
164 | value moved into `a` here
165 | move occurs because `a` has type `Option<U>` which does not implement the `Copy` trait
167 error: borrow of moved value
168 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:83:9
170 LL | a @ Some((mut b @ ref mut c, d @ ref e)) => {}
171 | -^^^^^^^^^^^^^^^^^---------^^^^^^-----^^
173 | | | value borrowed here after move
174 | | value borrowed here after move
175 | value moved into `a` here
176 | move occurs because `a` has type `Option<(U, U)>` which does not implement the `Copy` trait
178 error: borrow of moved value
179 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:83:19
181 LL | a @ Some((mut b @ ref mut c, d @ ref e)) => {}
184 | | value borrowed here after move
185 | value moved into `b` here
186 | move occurs because `b` has type `U` which does not implement the `Copy` trait
188 error: borrow of moved value
189 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:83:38
191 LL | a @ Some((mut b @ ref mut c, d @ ref e)) => {}
194 | | value borrowed here after move
195 | value moved into `d` here
196 | move occurs because `d` has type `U` which does not implement the `Copy` trait
198 error: borrow of moved value
199 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:93:9
201 LL | mut a @ Some([ref b, ref mut c]) => {}
202 | -----^^^^^^^^^-----^^---------^^
204 | | | value borrowed here after move
205 | | value borrowed here after move
206 | value moved into `a` here
207 | move occurs because `a` has type `Option<[U; 2]>` which does not implement the `Copy` trait
209 error: borrow of moved value
210 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:14:11
212 LL | fn f1(a @ ref b: U) {}
215 | | value borrowed here after move
216 | value moved into `a` here
217 | move occurs because `a` has type `U` which does not implement the `Copy` trait
219 error: borrow of moved value
220 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:18:11
222 LL | fn f2(mut a @ (b @ ref c, mut d @ ref e): (U, U)) {}
223 | -----^^^^^^^^-----^^^^^^^^^^-----^
225 | | | value borrowed here after move
226 | | value borrowed here after move
227 | value moved into `a` here
228 | move occurs because `a` has type `(U, U)` which does not implement the `Copy` trait
230 error: borrow of moved value
231 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:18:20
233 LL | fn f2(mut a @ (b @ ref c, mut d @ ref e): (U, U)) {}
236 | | value borrowed here after move
237 | value moved into `b` here
238 | move occurs because `b` has type `U` which does not implement the `Copy` trait
240 error: borrow of moved value
241 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:18:31
243 LL | fn f2(mut a @ (b @ ref c, mut d @ ref e): (U, U)) {}
246 | | value borrowed here after move
247 | value moved into `d` here
248 | move occurs because `d` has type `U` which does not implement the `Copy` trait
250 error: borrow of moved value
251 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:25:11
253 LL | fn f3(a @ [ref mut b, ref c]: [U; 2]) {}
254 | -^^^^---------^^-----^
256 | | | value borrowed here after move
257 | | value borrowed here after move
258 | value moved into `a` here
259 | move occurs because `a` has type `[U; 2]` which does not implement the `Copy` trait
261 error[E0382]: borrow of moved value
262 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:31:22
264 LL | let a @ (mut b @ ref mut c, d @ ref e) = (U, U);
267 | | value borrowed here after move
270 = note: move occurs because value has type `U`, which does not implement the `Copy` trait
272 error[E0382]: use of moved value
273 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:31:33
275 LL | let a @ (mut b @ ref mut c, d @ ref e) = (U, U);
276 | ------------------------^^^^^^^^^- ------ move occurs because value has type `(U, U)`, which does not implement the `Copy` trait
278 | | value used here after move
281 error[E0382]: borrow of moved value
282 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:31:37
284 LL | let a @ (mut b @ ref mut c, d @ ref e) = (U, U);
287 | | value borrowed here after move
290 = note: move occurs because value has type `U`, which does not implement the `Copy` trait
292 error[E0382]: borrow of moved value
293 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:38:25
295 LL | let a @ [ref mut b, ref c] = [U, U];
296 | ----------------^^^^^- ------ move occurs because value has type `[U; 2]`, which does not implement the `Copy` trait
298 | | value borrowed here after move
301 error[E0382]: borrow of moved value
302 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:41:13
304 LL | let a @ ref b = u();
305 | ----^^^^^ --- move occurs because value has type `U`, which does not implement the `Copy` trait
307 | | value borrowed here after move
310 error[E0382]: borrow of moved value
311 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:44:22
313 LL | let a @ (mut b @ ref mut c, d @ ref e) = (u(), u());
316 | | value borrowed here after move
319 = note: move occurs because value has type `U`, which does not implement the `Copy` trait
321 error[E0382]: use of moved value
322 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:44:33
324 LL | let a @ (mut b @ ref mut c, d @ ref e) = (u(), u());
325 | ------------------------^^^^^^^^^- ---------- move occurs because value has type `(U, U)`, which does not implement the `Copy` trait
327 | | value used here after move
330 error[E0382]: borrow of moved value
331 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:44:37
333 LL | let a @ (mut b @ ref mut c, d @ ref e) = (u(), u());
336 | | value borrowed here after move
339 = note: move occurs because value has type `U`, which does not implement the `Copy` trait
341 error[E0382]: borrow of moved value
342 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:51:25
344 LL | let a @ [ref mut b, ref c] = [u(), u()];
345 | ----------------^^^^^- ---------- move occurs because value has type `[U; 2]`, which does not implement the `Copy` trait
347 | | value borrowed here after move
350 error[E0382]: borrow of moved value
351 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:61:27
353 LL | a @ Some((mut b @ ref mut c, d @ ref e)) => {}
356 | | value borrowed here after move
359 = note: move occurs because value has type `U`, which does not implement the `Copy` trait
360 help: borrow this field in the pattern to avoid moving the value
362 LL | a @ Some((ref mut b @ ref mut c, d @ ref e)) => {}
365 error[E0382]: use of moved value
366 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:61:38
368 LL | match Some((U, U)) {
369 | ------------ move occurs because value has type `Option<(U, U)>`, which does not implement the `Copy` trait
370 LL | a @ Some((mut b @ ref mut c, d @ ref e)) => {}
371 | -----------------------------^^^^^^^^^--
373 | | value used here after move
376 error[E0382]: borrow of moved value
377 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:61:42
379 LL | a @ Some((mut b @ ref mut c, d @ ref e)) => {}
382 | | value borrowed here after move
385 = note: move occurs because value has type `U`, which does not implement the `Copy` trait
386 help: borrow this field in the pattern to avoid moving the value
388 LL | a @ Some((mut b @ ref mut c, ref d @ ref e)) => {}
391 error[E0382]: borrow of moved value
392 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:71:30
394 LL | match Some([U, U]) {
395 | ------------ move occurs because value has type `Option<[U; 2]>`, which does not implement the `Copy` trait
396 LL | mut a @ Some([ref b, ref mut c]) => {}
397 | ---------------------^^^^^^^^^--
399 | | value borrowed here after move
402 error[E0382]: borrow of moved value
403 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:77:18
405 LL | match Some(u()) {
406 | --------- move occurs because value has type `Option<U>`, which does not implement the `Copy` trait
407 LL | a @ Some(ref b) => {}
410 | | value borrowed here after move
413 error[E0382]: borrow of moved value
414 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:83:27
416 LL | a @ Some((mut b @ ref mut c, d @ ref e)) => {}
419 | | value borrowed here after move
422 = note: move occurs because value has type `U`, which does not implement the `Copy` trait
423 help: borrow this field in the pattern to avoid moving the value
425 LL | a @ Some((ref mut b @ ref mut c, d @ ref e)) => {}
428 error[E0382]: use of moved value
429 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:83:38
431 LL | match Some((u(), u())) {
432 | ---------------- move occurs because value has type `Option<(U, U)>`, which does not implement the `Copy` trait
433 LL | a @ Some((mut b @ ref mut c, d @ ref e)) => {}
434 | -----------------------------^^^^^^^^^--
436 | | value used here after move
439 error[E0382]: borrow of moved value
440 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:83:42
442 LL | a @ Some((mut b @ ref mut c, d @ ref e)) => {}
445 | | value borrowed here after move
448 = note: move occurs because value has type `U`, which does not implement the `Copy` trait
449 help: borrow this field in the pattern to avoid moving the value
451 LL | a @ Some((mut b @ ref mut c, ref d @ ref e)) => {}
454 error[E0382]: borrow of moved value
455 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:93:30
457 LL | match Some([u(), u()]) {
458 | ---------------- move occurs because value has type `Option<[U; 2]>`, which does not implement the `Copy` trait
459 LL | mut a @ Some([ref b, ref mut c]) => {}
460 | ---------------------^^^^^^^^^--
462 | | value borrowed here after move
465 error[E0382]: borrow of moved value
466 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:14:15
468 LL | fn f1(a @ ref b: U) {}
471 | | value borrowed here after move
473 | move occurs because value has type `U`, which does not implement the `Copy` trait
475 error[E0382]: borrow of moved value
476 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:18:24
478 LL | fn f2(mut a @ (b @ ref c, mut d @ ref e): (U, U)) {}
481 | | value borrowed here after move
484 = note: move occurs because value has type `U`, which does not implement the `Copy` trait
486 error[E0382]: use of moved value
487 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:18:31
489 LL | fn f2(mut a @ (b @ ref c, mut d @ ref e): (U, U)) {}
490 | --------------------^^^^^^^^^^^^^-
492 | | value used here after move
494 | move occurs because value has type `(U, U)`, which does not implement the `Copy` trait
496 error[E0382]: borrow of moved value
497 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:18:39
499 LL | fn f2(mut a @ (b @ ref c, mut d @ ref e): (U, U)) {}
502 | | value borrowed here after move
505 = note: move occurs because value has type `U`, which does not implement the `Copy` trait
507 error[E0382]: borrow of moved value
508 --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:25:27
510 LL | fn f3(a @ [ref mut b, ref c]: [U; 2]) {}
511 | ----------------^^^^^-
513 | | value borrowed here after move
515 | move occurs because value has type `[U; 2]`, which does not implement the `Copy` trait
517 error: aborting due to 48 previous errors
519 For more information about this error, try `rustc --explain E0382`.