26b4baf46e
Add expected error Add comment Tweak comment wording Fix after rebase to updated master Fix after rebase to updated master Distinguish mutation in normal and move closures Tweak error message Fix error message for nested closures Refactor code showing mutated upvar in closure Remove debug assert B
62 lines
2.2 KiB
Plaintext
62 lines
2.2 KiB
Plaintext
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
|
|
--> $DIR/borrow-raw-address-of-mutability.rs:5:13
|
|
|
|
|
LL | let x = 0;
|
|
| - help: consider changing this to be mutable: `mut x`
|
|
LL | let y = &raw mut x;
|
|
| ^^^^^^^^^^ cannot borrow as mutable
|
|
|
|
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
|
|
--> $DIR/borrow-raw-address-of-mutability.rs:11:17
|
|
|
|
|
LL | let x = 0;
|
|
| - help: consider changing this to be mutable: `mut x`
|
|
LL | let mut f = || {
|
|
LL | let y = &raw mut x;
|
|
| ^^^^^^^^^^ cannot borrow as mutable
|
|
|
|
error[E0596]: cannot borrow `f` as mutable, as it is not declared as mutable
|
|
--> $DIR/borrow-raw-address-of-mutability.rs:21:5
|
|
|
|
|
LL | let f = || {
|
|
| - help: consider changing this to be mutable: `mut f`
|
|
LL | let y = &raw mut x;
|
|
| - calling `f` requires mutable binding due to mutable borrow of `x`
|
|
LL | };
|
|
LL | f();
|
|
| ^ cannot borrow as mutable
|
|
|
|
error[E0596]: cannot borrow `x` as mutable, as it is a captured variable in a `Fn` closure
|
|
--> $DIR/borrow-raw-address-of-mutability.rs:29:17
|
|
|
|
|
LL | fn make_fn<F: Fn()>(f: F) -> F { f }
|
|
| - change this to accept `FnMut` instead of `Fn`
|
|
...
|
|
LL | let f = make_fn(|| {
|
|
| _____________-------_-
|
|
| | |
|
|
| | expects `Fn` instead of `FnMut`
|
|
LL | | let y = &raw mut x;
|
|
| | ^^^^^^^^^^ cannot borrow as mutable
|
|
LL | | });
|
|
| |_____- in this closure
|
|
|
|
error[E0596]: cannot borrow `x` as mutable, as it is a captured variable in a `Fn` closure
|
|
--> $DIR/borrow-raw-address-of-mutability.rs:37:17
|
|
|
|
|
LL | fn make_fn<F: Fn()>(f: F) -> F { f }
|
|
| - change this to accept `FnMut` instead of `Fn`
|
|
...
|
|
LL | let f = make_fn(move || {
|
|
| _____________-------_-
|
|
| | |
|
|
| | expects `Fn` instead of `FnMut`
|
|
LL | | let y = &raw mut x;
|
|
| | ^^^^^^^^^^ cannot borrow as mutable
|
|
LL | | });
|
|
| |_____- in this closure
|
|
|
|
error: aborting due to 5 previous errors
|
|
|
|
For more information about this error, try `rustc --explain E0596`.
|