error[E0505]: cannot move out of `a.x` because it is borrowed --> $DIR/borrowck-move-subcomponent.rs:15:14 | LL | let a : S = S { x : Box::new(1) }; | - binding `a` declared here LL | let pb = &a; | -- borrow of `a` occurs here LL | let S { x: ax } = a; | ^^ move out of `a.x` occurs here LL | f(pb); | -- borrow later used here | note: if `S` implemented `Clone`, you could clone the value --> $DIR/borrowck-move-subcomponent.rs:6:1 | LL | struct S { | ^^^^^^^^ consider implementing `Clone` for this type ... LL | let pb = &a; | - you could clone this value error: aborting due to 1 previous error For more information about this error, try `rustc --explain E0505`.