error[E0506]: cannot assign to `x` because it is borrowed --> $DIR/super-let.rs:30:28 | LL | super let b = DropMe(&mut x); | ------ `x` is borrowed here ... LL | #[cfg(borrowck)] { x = true; } | ^^^^^^^^ `x` is assigned to here but it was already borrowed ... LL | } | - borrow might be used here, when `b` is dropped and runs the `Drop` code for type `DropMe` error[E0506]: cannot assign to `x` because it is borrowed --> $DIR/super-let.rs:46:28 | LL | super let b = &DropMe(&mut x); | -------------- | | | | | `x` is borrowed here | a temporary with access to the borrow is created here ... ... LL | #[cfg(borrowck)] { x = true; } | ^^^^^^^^ `x` is assigned to here but it was already borrowed ... LL | } | - ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `DropMe` error[E0506]: cannot assign to `x` because it is borrowed --> $DIR/super-let.rs:64:32 | LL | super let b = identity(&DropMe(&mut x)); | -------------- | | | | | `x` is borrowed here | a temporary with access to the borrow is created here ... LL | #[cfg(borrowck)] { x = true; } | ^^^^^^^^ `x` is assigned to here but it was already borrowed ... LL | }; | - ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `DropMe` error[E0506]: cannot assign to `x` because it is borrowed --> $DIR/super-let.rs:87:36 | LL | super let b = identity(&DropMe(&mut x)); | -------------- | | | | | `x` is borrowed here | a temporary with access to the borrow is created here ... ... LL | #[cfg(borrowck)] { x = true; } | ^^^^^^^^ `x` is assigned to here but it was already borrowed ... LL | )); | - ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `DropMe` error[E0506]: cannot assign to `x` because it is borrowed --> $DIR/super-let.rs:107:28 | LL | super let b = DropMe(&mut x); | ------ `x` is borrowed here ... LL | #[cfg(borrowck)] { x = true; } | ^^^^^^^^ `x` is assigned to here but it was already borrowed ... LL | } | - borrow might be used here, when `b` is dropped and runs the `Drop` code for type `DropMe` error[E0506]: cannot assign to `x` because it is borrowed --> $DIR/super-let.rs:125:28 | LL | super let b = DropMe(&mut x); | ------ `x` is borrowed here ... LL | #[cfg(borrowck)] { x = true; } | ^^^^^^^^ `x` is assigned to here but it was already borrowed ... LL | } | - borrow might be used here, when `b` is dropped and runs the `Drop` code for type `DropMe` error[E0506]: cannot assign to `x` because it is borrowed --> $DIR/super-let.rs:143:28 | LL | super let b = DropMe(&mut x); | ------ `x` is borrowed here ... LL | #[cfg(borrowck)] { x = true; } | ^^^^^^^^ `x` is assigned to here but it was already borrowed ... LL | } | - borrow might be used here, when `b` is dropped and runs the `Drop` code for type `DropMe` error[E0506]: cannot assign to `x` because it is borrowed --> $DIR/super-let.rs:159:28 | LL | b = DropMe(&mut x); | ------ `x` is borrowed here ... LL | #[cfg(borrowck)] { x = true; } | ^^^^^^^^ `x` is assigned to here but it was already borrowed LL | drop(a); | - borrow later used here error[E0716]: temporary value dropped while borrowed --> $DIR/super-let.rs:172:33 | LL | #[cfg(borrowck)] { a = &String::from("asdf"); }; | ^^^^^^^^^^^^^^^^^^^^- temporary value is freed at the end of this statement | | | creates a temporary value which is freed while still in use ... LL | let _ = a; | - borrow later used here | = note: consider using a `let` binding to create a longer lived value error[E0506]: cannot assign to `x` because it is borrowed --> $DIR/super-let.rs:206:28 | LL | super let d = &DropMe(&mut x); | -------------- | | | | | `x` is borrowed here | a temporary with access to the borrow is created here ... ... LL | #[cfg(borrowck)] { x = true; } | ^^^^^^^^ `x` is assigned to here but it was already borrowed ... LL | } | - ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `DropMe` error[E0506]: cannot assign to `x` because it is borrowed --> $DIR/super-let.rs:227:32 | LL | super let d = identity(&DropMe(&mut x)); | -------------- | | | | | `x` is borrowed here | a temporary with access to the borrow is created here ... ... LL | #[cfg(borrowck)] { x = true; } | ^^^^^^^^ `x` is assigned to here but it was already borrowed ... LL | }; | - ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `DropMe` error[E0506]: cannot assign to `x` because it is borrowed --> $DIR/super-let.rs:246:28 | LL | super let b = DropMe(&mut x); | ------ `x` is borrowed here ... LL | #[cfg(borrowck)] { x = true; } | ^^^^^^^^ `x` is assigned to here but it was already borrowed ... LL | } | - borrow might be used here, when `b` is dropped and runs the `Drop` code for type `DropMe` error[E0506]: cannot assign to `x` because it is borrowed --> $DIR/super-let.rs:263:28 | LL | let dropme = Some(DropMe(&mut x)); | ------ `x` is borrowed here ... LL | #[cfg(borrowck)] { x = true; } | ^^^^^^^^ `x` is assigned to here but it was already borrowed ... LL | } | - borrow might be used here, when `x` is dropped and runs the `Drop` code for type `DropMe` error: aborting due to 13 previous errors Some errors have detailed explanations: E0506, E0716. For more information about an error, try `rustc --explain E0506`.