1error[E0382]: borrow of moved value: `tup0` 2 --> $DIR/move-ref-patterns-closure-captures-inside.rs:31:10 3 | 4LL | let mut tup0 = (S, S); 5 | -------- move occurs because `tup0` has type `(S, S)`, which does not implement the `Copy` trait 6... 7LL | let mut closure = || { 8 | -- value moved into closure here 9LL | // Tuples... 10LL | let (ref mut borrow, mov) = tup0; 11 | ---- variable moved due to use in closure 12... 13LL | drop(&tup0); 14 | ^^^^^ value borrowed here after move 15 16error[E0382]: borrow of moved value: `tup1` 17 --> $DIR/move-ref-patterns-closure-captures-inside.rs:32:10 18 | 19LL | let mut tup1 = (S, S, S); 20 | -------- move occurs because `tup1` has type `(S, S, S)`, which does not implement the `Copy` trait 21... 22LL | let mut closure = || { 23 | -- value moved into closure here 24... 25LL | let (mov, _, ref mut borrow) = tup1; 26 | ---- variable moved due to use in closure 27... 28LL | drop(&tup1); 29 | ^^^^^ value borrowed here after move 30 31error[E0382]: borrow of moved value: `tup2` 32 --> $DIR/move-ref-patterns-closure-captures-inside.rs:33:10 33 | 34LL | let tup2 = (S, S); 35 | ---- move occurs because `tup2` has type `(S, S)`, which does not implement the `Copy` trait 36... 37LL | let mut closure = || { 38 | -- value moved into closure here 39... 40LL | let (ref borrow, mov) = tup2; 41 | ---- variable moved due to use in closure 42... 43LL | drop(&tup2); 44 | ^^^^^ value borrowed here after move 45 46error[E0382]: borrow of moved value: `tup3` 47 --> $DIR/move-ref-patterns-closure-captures-inside.rs:34:10 48 | 49LL | let tup3 = (S, S, S); 50 | ---- move occurs because `tup3` has type `(S, S, S)`, which does not implement the `Copy` trait 51... 52LL | let mut closure = || { 53 | -- value moved into closure here 54... 55LL | let (mov, _, ref borrow) = tup3; 56 | ---- variable moved due to use in closure 57... 58LL | drop(&tup3); 59 | ^^^^^ value borrowed here after move 60 61error[E0382]: borrow of moved value: `tup4` 62 --> $DIR/move-ref-patterns-closure-captures-inside.rs:39:10 63 | 64LL | let tup4 = (S, S); 65 | ---- move occurs because `tup4` has type `(S, S)`, which does not implement the `Copy` trait 66... 67LL | let mut closure = || { 68 | -- value moved into closure here 69... 70LL | let (ref borrow, mov) = tup4; 71 | ---- variable moved due to use in closure 72... 73LL | drop(&tup4.0); 74 | ^^^^^^^ value borrowed here after move 75 76error[E0382]: borrow of moved value: `arr0` 77 --> $DIR/move-ref-patterns-closure-captures-inside.rs:41:10 78 | 79LL | let mut arr0 = [S, S, S]; 80 | -------- move occurs because `arr0` has type `[S; 3]`, which does not implement the `Copy` trait 81... 82LL | let mut closure = || { 83 | -- value moved into closure here 84... 85LL | let [mov @ .., ref borrow] = arr0; 86 | ---- variable moved due to use in closure 87... 88LL | drop(&arr0); 89 | ^^^^^ value borrowed here after move 90 91error[E0382]: borrow of moved value: `arr1` 92 --> $DIR/move-ref-patterns-closure-captures-inside.rs:42:36 93 | 94LL | let mut arr1 = [S, S, S, S, S]; 95 | -------- move occurs because `arr1` has type `[S; 5]`, which does not implement the `Copy` trait 96... 97LL | let mut closure = || { 98 | -- value moved into closure here 99... 100LL | let [_, ref mut borrow @ .., _, mov] = arr1; 101 | ---- variable moved due to use in closure 102... 103LL | let [_, mov1, mov2, mov3, _] = &arr1; 104 | ^^^^^ value borrowed here after move 105 106error[E0382]: borrow of moved value: `arr2` 107 --> $DIR/move-ref-patterns-closure-captures-inside.rs:43:10 108 | 109LL | let arr2 = [S, S, S]; 110 | ---- move occurs because `arr2` has type `[S; 3]`, which does not implement the `Copy` trait 111... 112LL | let mut closure = || { 113 | -- value moved into closure here 114... 115LL | let [mov @ .., ref borrow] = arr2; 116 | ---- variable moved due to use in closure 117... 118LL | drop(&arr2); 119 | ^^^^^ value borrowed here after move 120 121error[E0382]: borrow of moved value: `arr3` 122 --> $DIR/move-ref-patterns-closure-captures-inside.rs:44:36 123 | 124LL | let arr3 = [S, S, S, S, S]; 125 | ---- move occurs because `arr3` has type `[S; 5]`, which does not implement the `Copy` trait 126... 127LL | let mut closure = || { 128 | -- value moved into closure here 129... 130LL | let [_, ref borrow @ .., _, mov] = arr3; 131 | ---- variable moved due to use in closure 132... 133LL | let [_, mov1, mov2, mov3, _] = &arr3; 134 | ^^^^^ value borrowed here after move 135 136error[E0382]: borrow of moved value: `tup0` 137 --> $DIR/move-ref-patterns-closure-captures-inside.rs:75:10 138 | 139LL | let mut tup0: Option<(S, S)> = None; 140 | -------- move occurs because `tup0` has type `Option<(S, S)>`, which does not implement the `Copy` trait 141... 142LL | let mut closure = || { 143 | -- value moved into closure here 144LL | m!((ref mut borrow, mov) = tup0); 145 | ---- variable moved due to use in closure 146... 147LL | drop(&tup0); 148 | ^^^^^ value borrowed here after move 149 150error[E0382]: borrow of moved value: `tup1` 151 --> $DIR/move-ref-patterns-closure-captures-inside.rs:76:10 152 | 153LL | let mut tup1: Option<(S, S, S)> = None; 154 | -------- move occurs because `tup1` has type `Option<(S, S, S)>`, which does not implement the `Copy` trait 155... 156LL | let mut closure = || { 157 | -- value moved into closure here 158LL | m!((ref mut borrow, mov) = tup0); 159LL | m!((mov, _, ref mut borrow) = tup1); 160 | ---- variable moved due to use in closure 161... 162LL | drop(&tup1); 163 | ^^^^^ value borrowed here after move 164 165error[E0382]: borrow of moved value: `tup2` 166 --> $DIR/move-ref-patterns-closure-captures-inside.rs:77:10 167 | 168LL | let tup2: Option<(S, S)> = None; 169 | ---- move occurs because `tup2` has type `Option<(S, S)>`, which does not implement the `Copy` trait 170... 171LL | let mut closure = || { 172 | -- value moved into closure here 173... 174LL | m!((ref borrow, mov) = tup2); 175 | ---- variable moved due to use in closure 176... 177LL | drop(&tup2); 178 | ^^^^^ value borrowed here after move 179 180error[E0382]: borrow of moved value: `tup3` 181 --> $DIR/move-ref-patterns-closure-captures-inside.rs:78:10 182 | 183LL | let tup3: Option<(S, S, S)> = None; 184 | ---- move occurs because `tup3` has type `Option<(S, S, S)>`, which does not implement the `Copy` trait 185... 186LL | let mut closure = || { 187 | -- value moved into closure here 188... 189LL | m!((mov, _, ref borrow) = tup3); 190 | ---- variable moved due to use in closure 191... 192LL | drop(&tup3); 193 | ^^^^^ value borrowed here after move 194 195error[E0382]: borrow of moved value: `tup4` 196 --> $DIR/move-ref-patterns-closure-captures-inside.rs:79:21 197 | 198LL | let tup4: Option<(S, S)> = None; 199 | ---- move occurs because `tup4` has type `Option<(S, S)>`, which does not implement the `Copy` trait 200... 201LL | let mut closure = || { 202 | -- value moved into closure here 203... 204LL | m!((ref borrow, mov) = tup4); 205 | ---- variable moved due to use in closure 206... 207LL | m!((ref x, _) = &tup4); 208 | ^^^^^ value borrowed here after move 209 210error[E0382]: borrow of moved value: `arr0` 211 --> $DIR/move-ref-patterns-closure-captures-inside.rs:80:10 212 | 213LL | let mut arr0: Option<[S; 3]> = None; 214 | -------- move occurs because `arr0` has type `Option<[S; 3]>`, which does not implement the `Copy` trait 215... 216LL | let mut closure = || { 217 | -- value moved into closure here 218... 219LL | m!([mov @ .., ref borrow] = arr0); 220 | ---- variable moved due to use in closure 221... 222LL | drop(&arr0); 223 | ^^^^^ value borrowed here after move 224 225error[E0382]: borrow of moved value: `arr1` 226 --> $DIR/move-ref-patterns-closure-captures-inside.rs:81:35 227 | 228LL | let mut arr1: Option<[S; 5]> = None; 229 | -------- move occurs because `arr1` has type `Option<[S; 5]>`, which does not implement the `Copy` trait 230... 231LL | let mut closure = || { 232 | -- value moved into closure here 233... 234LL | m!([_, ref mut borrow @ .., _, mov] = arr1); 235 | ---- variable moved due to use in closure 236... 237LL | m!([_, mov1, mov2, mov3, _] = &arr1); 238 | ^^^^^ value borrowed here after move 239 240error[E0382]: borrow of moved value: `arr2` 241 --> $DIR/move-ref-patterns-closure-captures-inside.rs:82:10 242 | 243LL | let arr2: Option<[S; 3]> = None; 244 | ---- move occurs because `arr2` has type `Option<[S; 3]>`, which does not implement the `Copy` trait 245LL | let arr3: Option<[S; 5]> = None; 246LL | let mut closure = || { 247 | -- value moved into closure here 248... 249LL | m!([mov @ .., ref borrow] = arr2); 250 | ---- variable moved due to use in closure 251... 252LL | drop(&arr2); 253 | ^^^^^ value borrowed here after move 254 255error[E0382]: borrow of moved value: `arr3` 256 --> $DIR/move-ref-patterns-closure-captures-inside.rs:83:35 257 | 258LL | let arr3: Option<[S; 5]> = None; 259 | ---- move occurs because `arr3` has type `Option<[S; 5]>`, which does not implement the `Copy` trait 260LL | let mut closure = || { 261 | -- value moved into closure here 262... 263LL | m!([_, ref borrow @ .., _, mov] = arr3); 264 | ---- variable moved due to use in closure 265... 266LL | m!([_, mov1, mov2, mov3, _] = &arr3); 267 | ^^^^^ value borrowed here after move 268 269error[E0382]: borrow of moved value: `tup0` 270 --> $DIR/move-ref-patterns-closure-captures-inside.rs:111:10 271 | 272LL | let mut tup0: Option<(S, S)> = None; 273 | -------- move occurs because `tup0` has type `Option<(S, S)>`, which does not implement the `Copy` trait 274... 275LL | let mut closure = || { 276 | -- value moved into closure here 277LL | m!((ref mut borrow, mov) = tup0); 278 | ---- variable moved due to use in closure 279... 280LL | drop(&tup0); 281 | ^^^^^ value borrowed here after move 282 283error[E0382]: borrow of moved value: `tup1` 284 --> $DIR/move-ref-patterns-closure-captures-inside.rs:112:10 285 | 286LL | let mut tup1: Option<(S, S, S)> = None; 287 | -------- move occurs because `tup1` has type `Option<(S, S, S)>`, which does not implement the `Copy` trait 288... 289LL | let mut closure = || { 290 | -- value moved into closure here 291LL | m!((ref mut borrow, mov) = tup0); 292LL | m!((mov, _, ref mut borrow) = tup1); 293 | ---- variable moved due to use in closure 294... 295LL | drop(&tup1); 296 | ^^^^^ value borrowed here after move 297 298error[E0382]: borrow of moved value: `tup2` 299 --> $DIR/move-ref-patterns-closure-captures-inside.rs:113:10 300 | 301LL | let tup2: Option<(S, S)> = None; 302 | ---- move occurs because `tup2` has type `Option<(S, S)>`, which does not implement the `Copy` trait 303... 304LL | let mut closure = || { 305 | -- value moved into closure here 306... 307LL | m!((ref borrow, mov) = tup2); 308 | ---- variable moved due to use in closure 309... 310LL | drop(&tup2); 311 | ^^^^^ value borrowed here after move 312 313error[E0382]: borrow of moved value: `tup3` 314 --> $DIR/move-ref-patterns-closure-captures-inside.rs:114:10 315 | 316LL | let tup3: Option<(S, S, S)> = None; 317 | ---- move occurs because `tup3` has type `Option<(S, S, S)>`, which does not implement the `Copy` trait 318... 319LL | let mut closure = || { 320 | -- value moved into closure here 321... 322LL | m!((mov, _, ref borrow) = tup3); 323 | ---- variable moved due to use in closure 324... 325LL | drop(&tup3); 326 | ^^^^^ value borrowed here after move 327 328error[E0382]: borrow of moved value: `tup4` 329 --> $DIR/move-ref-patterns-closure-captures-inside.rs:115:21 330 | 331LL | let tup4: Option<(S, S)> = None; 332 | ---- move occurs because `tup4` has type `Option<(S, S)>`, which does not implement the `Copy` trait 333... 334LL | let mut closure = || { 335 | -- value moved into closure here 336... 337LL | m!((ref borrow, mov) = tup4); 338 | ---- variable moved due to use in closure 339... 340LL | m!((ref x, _) = &tup4); 341 | ^^^^^ value borrowed here after move 342 343error[E0382]: borrow of moved value: `arr0` 344 --> $DIR/move-ref-patterns-closure-captures-inside.rs:116:10 345 | 346LL | let mut arr0: Option<[S; 3]> = None; 347 | -------- move occurs because `arr0` has type `Option<[S; 3]>`, which does not implement the `Copy` trait 348... 349LL | let mut closure = || { 350 | -- value moved into closure here 351... 352LL | m!([mov @ .., ref borrow] = arr0); 353 | ---- variable moved due to use in closure 354... 355LL | drop(&arr0); 356 | ^^^^^ value borrowed here after move 357 358error[E0382]: borrow of moved value: `arr1` 359 --> $DIR/move-ref-patterns-closure-captures-inside.rs:117:35 360 | 361LL | let mut arr1: Option<[S; 5]> = None; 362 | -------- move occurs because `arr1` has type `Option<[S; 5]>`, which does not implement the `Copy` trait 363... 364LL | let mut closure = || { 365 | -- value moved into closure here 366... 367LL | m!([_, ref mut borrow @ .., _, mov] = arr1); 368 | ---- variable moved due to use in closure 369... 370LL | m!([_, mov1, mov2, mov3, _] = &arr1); 371 | ^^^^^ value borrowed here after move 372 373error[E0382]: borrow of moved value: `arr2` 374 --> $DIR/move-ref-patterns-closure-captures-inside.rs:118:10 375 | 376LL | let arr2: Option<[S; 3]> = None; 377 | ---- move occurs because `arr2` has type `Option<[S; 3]>`, which does not implement the `Copy` trait 378LL | let arr3: Option<[S; 5]> = None; 379LL | let mut closure = || { 380 | -- value moved into closure here 381... 382LL | m!([mov @ .., ref borrow] = arr2); 383 | ---- variable moved due to use in closure 384... 385LL | drop(&arr2); 386 | ^^^^^ value borrowed here after move 387 388error[E0382]: borrow of moved value: `arr3` 389 --> $DIR/move-ref-patterns-closure-captures-inside.rs:119:35 390 | 391LL | let arr3: Option<[S; 5]> = None; 392 | ---- move occurs because `arr3` has type `Option<[S; 5]>`, which does not implement the `Copy` trait 393LL | let mut closure = || { 394 | -- value moved into closure here 395... 396LL | m!([_, ref borrow @ .., _, mov] = arr3); 397 | ---- variable moved due to use in closure 398... 399LL | m!([_, mov1, mov2, mov3, _] = &arr3); 400 | ^^^^^ value borrowed here after move 401 402error: aborting due to 27 previous errors 403 404For more information about this error, try `rustc --explain E0382`. 405