warning: denote infinite loops with `loop { ... }` --> $DIR/liveness-move-in-while.rs:8:9 | LL | while true { while true { while true { x = y; x.clone(); } } } | ^^^^^^^^^^ help: use `loop` | = note: `#[warn(while_true)]` on by default warning: denote infinite loops with `loop { ... }` --> $DIR/liveness-move-in-while.rs:8:22 | LL | while true { while true { while true { x = y; x.clone(); } } } | ^^^^^^^^^^ help: use `loop` warning: denote infinite loops with `loop { ... }` --> $DIR/liveness-move-in-while.rs:8:35 | LL | while true { while true { while true { x = y; x.clone(); } } } | ^^^^^^^^^^ help: use `loop` error[E0382]: borrow of moved value: `y` --> $DIR/liveness-move-in-while.rs:7:24 | LL | let y: Box = 42.into(); | - move occurs because `y` has type `Box`, which does not implement the `Copy` trait ... LL | loop { | ---- inside of this loop LL | println!("{}", y); | ^ value borrowed here after move LL | while true { while true { while true { x = y; x.clone(); } } } | ---------- ---------- ---------- - value moved here, in previous iteration of loop | | | | | | | inside of this loop | | inside of this loop | inside of this loop | = note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info) help: consider cloning the value if the performance cost is acceptable | LL | while true { while true { while true { x = y.clone(); x.clone(); } } } | ++++++++ error: aborting due to previous error; 3 warnings emitted For more information about this error, try `rustc --explain E0382`.