error[E0506]: cannot assign to `vec[..]` because it is borrowed --> $DIR/borrowck-vec-pattern-nesting.rs:21:13 | LL | [box ref _a, _, _] => { | ------ borrow of `vec[..]` occurs here LL | //~^ borrow of `vec[..]` occurs here LL | vec[0] = box 4; //~ ERROR cannot assign | ^^^^^^^^^^^^^^ assignment to borrowed `vec[..]` occurs here error[E0506]: cannot assign to `vec[..]` because it is borrowed --> $DIR/borrowck-vec-pattern-nesting.rs:33:13 | LL | &mut [ref _b..] => { | ------ borrow of `vec[..]` occurs here LL | //~^ borrow of `vec[..]` occurs here LL | vec[0] = box 4; //~ ERROR cannot assign | ^^^^^^^^^^^^^^ assignment to borrowed `vec[..]` occurs here error[E0508]: cannot move out of type `[std::boxed::Box]`, a non-copy slice --> $DIR/borrowck-vec-pattern-nesting.rs:43:14 | LL | &mut [_a, //~ ERROR cannot move out | ^-- hint: to prevent move, use `ref _a` or `ref mut _a` | ______________| | | LL | | //~| cannot move out LL | | //~| to prevent move LL | | .. LL | | ] => { | |_________^ cannot move out of here error[E0508]: cannot move out of type `[std::boxed::Box]`, a non-copy slice --> $DIR/borrowck-vec-pattern-nesting.rs:56:13 | LL | let a = vec[0]; //~ ERROR cannot move out | ^^^^^^ | | | cannot move out of here | help: consider using a reference instead: `&vec[0]` error[E0508]: cannot move out of type `[std::boxed::Box]`, a non-copy slice --> $DIR/borrowck-vec-pattern-nesting.rs:64:14 | LL | &mut [ //~ ERROR cannot move out | ______________^ LL | | //~^ cannot move out LL | | _b] => {} | |__________--^ cannot move out of here | | | hint: to prevent move, use `ref _b` or `ref mut _b` error[E0508]: cannot move out of type `[std::boxed::Box]`, a non-copy slice --> $DIR/borrowck-vec-pattern-nesting.rs:69:13 | LL | let a = vec[0]; //~ ERROR cannot move out | ^^^^^^ | | | cannot move out of here | help: consider using a reference instead: `&vec[0]` error[E0508]: cannot move out of type `[std::boxed::Box]`, a non-copy slice --> $DIR/borrowck-vec-pattern-nesting.rs:77:14 | LL | &mut [_a, _b, _c] => {} //~ ERROR cannot move out | ^--^^--^^--^ | || | | | || | ...and here (use `ref _c` or `ref mut _c`) | || ...and here (use `ref _b` or `ref mut _b`) | |hint: to prevent move, use `ref _a` or `ref mut _a` | cannot move out of here error[E0508]: cannot move out of type `[std::boxed::Box]`, a non-copy slice --> $DIR/borrowck-vec-pattern-nesting.rs:81:13 | LL | let a = vec[0]; //~ ERROR cannot move out | ^^^^^^ | | | cannot move out of here | help: consider using a reference instead: `&vec[0]` error: aborting due to 8 previous errors You've got a few errors: E0506, E0508 If you want more information on an error, try using "rustc --explain E0506"