-error[E0007]: cannot bind by-move with sub-bindings
- --> $DIR/borrowck-pat-at-and-box.rs:16:9
- |
-LL | let a @ box &b = Box::new(&C);
- | ^^^^^^^^^^ binds an already bound by-move value by moving it
-
-error[E0007]: cannot bind by-move with sub-bindings
- --> $DIR/borrowck-pat-at-and-box.rs:20:9
- |
-LL | let a @ box b = Box::new(C);
- | ^^^^^^^^^ binds an already bound by-move value by moving it
-
-error[E0007]: cannot bind by-move with sub-bindings
- --> $DIR/borrowck-pat-at-and-box.rs:32:25
- |
-LL | match Box::new(C) { a @ box b => {} }
- | ^^^^^^^^^ binds an already bound by-move value by moving it
-
-error[E0009]: cannot bind by-move and by-ref in the same pattern
- --> $DIR/borrowck-pat-at-and-box.rs:36:21
+error: cannot move out of value because it is borrowed
+ --> $DIR/borrowck-pat-at-and-box.rs:31:9
|
LL | let ref a @ box b = Box::new(NC);
- | ------------^
+ | -----^^^^^^^-
| | |
- | | by-move pattern here
- | by-ref pattern here
+ | | value moved into `b` here
+ | value borrowed, by `a`, here
-error: cannot borrow `a` as mutable because it is also borrowed as immutable
- --> $DIR/borrowck-pat-at-and-box.rs:38:9
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-at-and-box.rs:34:9
|
LL | let ref a @ box ref mut b = Box::new(nc());
| -----^^^^^^^---------
| | |
- | | mutable borrow occurs here
- | immutable borrow occurs here
+ | | mutable borrow, by `b`, occurs here
+ | immutable borrow, by `a`, occurs here
-error: cannot borrow `a` as mutable because it is also borrowed as immutable
- --> $DIR/borrowck-pat-at-and-box.rs:40:9
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-at-and-box.rs:36:9
|
LL | let ref a @ box ref mut b = Box::new(NC);
| -----^^^^^^^---------
| | |
- | | mutable borrow occurs here
- | immutable borrow occurs here
+ | | mutable borrow, by `b`, occurs here
+ | immutable borrow, by `a`, occurs here
-error: cannot borrow `a` as mutable because it is also borrowed as immutable
- --> $DIR/borrowck-pat-at-and-box.rs:42:9
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-at-and-box.rs:38:9
|
LL | let ref a @ box ref mut b = Box::new(NC);
| -----^^^^^^^---------
| | |
- | | mutable borrow occurs here
- | immutable borrow occurs here
+ | | mutable borrow, by `b`, occurs here
+ | immutable borrow, by `a`, occurs here
-error: cannot borrow `a` as mutable because it is also borrowed as immutable
- --> $DIR/borrowck-pat-at-and-box.rs:45:9
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-at-and-box.rs:42:9
|
LL | let ref a @ box ref mut b = Box::new(NC);
| -----^^^^^^^---------
| | |
- | | mutable borrow occurs here
- | immutable borrow occurs here
+ | | mutable borrow, by `b`, occurs here
+ | immutable borrow, by `a`, occurs here
-error: cannot borrow `a` as immutable because it is also borrowed as mutable
- --> $DIR/borrowck-pat-at-and-box.rs:51:9
+error: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-at-and-box.rs:48:9
|
LL | let ref mut a @ box ref b = Box::new(NC);
| ---------^^^^^^^-----
| | |
- | | immutable borrow occurs here
- | mutable borrow occurs here
+ | | immutable borrow, by `b`, occurs here
+ | mutable borrow, by `a`, occurs here
-error: cannot borrow `a` as immutable because it is also borrowed as mutable
- --> $DIR/borrowck-pat-at-and-box.rs:65:9
+error: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-at-and-box.rs:62:9
|
LL | ref mut a @ box ref b => {
| ---------^^^^^^^-----
| | |
- | | immutable borrow occurs here
- | mutable borrow occurs here
+ | | immutable borrow, by `b`, occurs here
+ | mutable borrow, by `a`, occurs here
-error[E0009]: cannot bind by-move and by-ref in the same pattern
- --> $DIR/borrowck-pat-at-and-box.rs:74:38
- |
-LL | box [Ok(a), ref xs @ .., Err(b)] => {}
- | ----------- ^ by-move pattern here
- | |
- | by-ref pattern here
-
-error[E0009]: cannot bind by-move and by-ref in the same pattern
- --> $DIR/borrowck-pat-at-and-box.rs:80:46
- |
-LL | [Ok(box ref a), ref xs @ .., Err(box b), Err(box ref mut c)] => {}
- | ----- ----------- ^ --------- by-ref pattern here
- | | | |
- | | | by-move pattern here
- | | by-ref pattern here
- | by-ref pattern here
-
-error[E0007]: cannot bind by-move with sub-bindings
- --> $DIR/borrowck-pat-at-and-box.rs:24:11
- |
-LL | fn f1(a @ box &b: Box<&C>) {}
- | ^^^^^^^^^^ binds an already bound by-move value by moving it
-
-error[E0007]: cannot bind by-move with sub-bindings
- --> $DIR/borrowck-pat-at-and-box.rs:28:11
- |
-LL | fn f2(a @ box b: Box<C>) {}
- | ^^^^^^^^^ binds an already bound by-move value by moving it
-
-error: cannot borrow `a` as immutable because it is also borrowed as mutable
- --> $DIR/borrowck-pat-at-and-box.rs:57:11
+error: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-at-and-box.rs:54:11
|
LL | fn f5(ref mut a @ box ref b: Box<NC>) {
| ---------^^^^^^^-----
| | |
- | | immutable borrow occurs here
- | mutable borrow occurs here
-
-error[E0382]: use of moved value
- --> $DIR/borrowck-pat-at-and-box.rs:16:18
- |
-LL | let a @ box &b = Box::new(&C);
- | ---------^ ------------ move occurs because value has type `std::boxed::Box<&C>`, which does not implement the `Copy` trait
- | | |
- | | value used here after move
- | value moved here
+ | | immutable borrow, by `b`, occurs here
+ | mutable borrow, by `a`, occurs here
-error[E0382]: use of moved value
- --> $DIR/borrowck-pat-at-and-box.rs:20:17
- |
-LL | let a @ box b = Box::new(C);
- | --------^ ----------- move occurs because value has type `std::boxed::Box<C>`, which does not implement the `Copy` trait
- | | |
- | | value used here after move
- | value moved here
+error[E0382]: borrow of moved value
+ --> $DIR/borrowck-pat-at-and-box.rs:31:9
+ |
+LL | let ref a @ box b = Box::new(NC);
+ | ^^^^^ - value moved here
+ | |
+ | value borrowed here after move
+ |
+ = note: move occurs because value has type `NC`, which does not implement the `Copy` trait
+help: borrow this binding in the pattern to avoid moving the value
+ |
+LL | let ref a @ box ref b = Box::new(NC);
+ | +++
-error[E0382]: use of moved value
- --> $DIR/borrowck-pat-at-and-box.rs:32:33
- |
-LL | match Box::new(C) { a @ box b => {} }
- | ----------- --------^
- | | | |
- | | | value used here after move
- | | value moved here
- | move occurs because value has type `std::boxed::Box<C>`, which does not implement the `Copy` trait
+error[E0502]: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-at-and-box.rs:38:9
+ |
+LL | let ref a @ box ref mut b = Box::new(NC);
+ | ^^^^^ --------- mutable borrow occurs here
+ | |
+ | immutable borrow occurs here
+...
+LL | *b = NC;
+ | ------- mutable borrow later used here
-error[E0502]: cannot borrow `_` as mutable because it is also borrowed as immutable
- --> $DIR/borrowck-pat-at-and-box.rs:45:21
+error[E0502]: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-at-and-box.rs:42:9
|
LL | let ref a @ box ref mut b = Box::new(NC);
- | ------------^^^^^^^^^
- | | |
- | | mutable borrow occurs here
+ | ^^^^^ --------- mutable borrow occurs here
+ | |
| immutable borrow occurs here
...
-LL | drop(a);
- | - immutable borrow later used here
+LL | *b = NC;
+ | ------- mutable borrow later used here
-error[E0502]: cannot borrow `_` as immutable because it is also borrowed as mutable
- --> $DIR/borrowck-pat-at-and-box.rs:51:25
+error[E0502]: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-at-and-box.rs:48:9
|
LL | let ref mut a @ box ref b = Box::new(NC);
- | ----------------^^^^^
- | | |
- | | immutable borrow occurs here
+ | ^^^^^^^^^ ----- immutable borrow occurs here
+ | |
| mutable borrow occurs here
...
-LL | *a = Box::new(NC);
- | -- mutable borrow later used here
+LL | drop(b);
+ | - immutable borrow later used here
-error[E0502]: cannot borrow `_` as immutable because it is also borrowed as mutable
- --> $DIR/borrowck-pat-at-and-box.rs:65:25
+error[E0502]: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-at-and-box.rs:62:9
|
LL | ref mut a @ box ref b => {
- | ----------------^^^^^
- | | |
- | | immutable borrow occurs here
+ | ^^^^^^^^^ ----- immutable borrow occurs here
+ | |
| mutable borrow occurs here
...
-LL | *a = Box::new(NC);
- | -- mutable borrow later used here
-
-error[E0382]: use of moved value
- --> $DIR/borrowck-pat-at-and-box.rs:24:20
- |
-LL | fn f1(a @ box &b: Box<&C>) {}
- | ---------^
- | | |
- | | value used here after move
- | value moved here
- | move occurs because value has type `std::boxed::Box<&C>`, which does not implement the `Copy` trait
+LL | drop(b);
+ | - immutable borrow later used here
-error[E0382]: use of moved value
- --> $DIR/borrowck-pat-at-and-box.rs:28:19
- |
-LL | fn f2(a @ box b: Box<C>) {}
- | --------^
- | | |
- | | value used here after move
- | value moved here
- | move occurs because value has type `std::boxed::Box<C>`, which does not implement the `Copy` trait
-
-error[E0502]: cannot borrow `_` as immutable because it is also borrowed as mutable
- --> $DIR/borrowck-pat-at-and-box.rs:57:27
+error[E0502]: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-at-and-box.rs:54:11
|
LL | fn f5(ref mut a @ box ref b: Box<NC>) {
- | ----------------^^^^^
- | | |
- | | immutable borrow occurs here
+ | ^^^^^^^^^ ----- immutable borrow occurs here
+ | |
| mutable borrow occurs here
...
-LL | *a = Box::new(NC);
- | -- mutable borrow later used here
+LL | drop(b);
+ | - immutable borrow later used here
-error: aborting due to 24 previous errors
+error: aborting due to 14 previous errors
-Some errors have detailed explanations: E0007, E0009, E0382, E0502.
-For more information about an error, try `rustc --explain E0007`.
+Some errors have detailed explanations: E0382, E0502.
+For more information about an error, try `rustc --explain E0382`.