error[E0505]: cannot move out of `x` because it is borrowed --> $DIR/borrow-tuple-fields.rs:12:13 | LL | let x: (Box<_>, _) = (Box::new(1), 2); | - binding `x` declared here LL | let r = &x.0; | ---- borrow of `x.0` occurs here LL | let y = x; | ^ move out of `x` occurs here LL | LL | r.use_ref(); | - borrow later used here | help: consider cloning the value if the performance cost is acceptable | LL | let r = &x.0.clone(); | ++++++++ error[E0502]: cannot borrow `x.0` as mutable because it is also borrowed as immutable --> $DIR/borrow-tuple-fields.rs:18:13 | LL | let a = &x.0; | ---- immutable borrow occurs here LL | let b = &mut x.0; | ^^^^^^^^ mutable borrow occurs here LL | a.use_ref(); | - immutable borrow later used here error[E0499]: cannot borrow `x.0` as mutable more than once at a time --> $DIR/borrow-tuple-fields.rs:23:13 | LL | let a = &mut x.0; | -------- first mutable borrow occurs here LL | let b = &mut x.0; | ^^^^^^^^ second mutable borrow occurs here LL | a.use_ref(); | - first borrow later used here error[E0505]: cannot move out of `x` because it is borrowed --> $DIR/borrow-tuple-fields.rs:28:13 | LL | let x = Foo(Box::new(1), 2); | - binding `x` declared here LL | let r = &x.0; | ---- borrow of `x.0` occurs here LL | let y = x; | ^ move out of `x` occurs here LL | r.use_ref(); | - borrow later used here | help: consider cloning the value if the performance cost is acceptable | LL | let r = &x.0.clone(); | ++++++++ error[E0502]: cannot borrow `x.0` as mutable because it is also borrowed as immutable --> $DIR/borrow-tuple-fields.rs:33:13 | LL | let a = &x.0; | ---- immutable borrow occurs here LL | let b = &mut x.0; | ^^^^^^^^ mutable borrow occurs here LL | a.use_ref(); | - immutable borrow later used here error[E0499]: cannot borrow `x.0` as mutable more than once at a time --> $DIR/borrow-tuple-fields.rs:38:13 | LL | let a = &mut x.0; | -------- first mutable borrow occurs here LL | let b = &mut x.0; | ^^^^^^^^ second mutable borrow occurs here LL | a.use_mut(); | - first borrow later used here error: aborting due to 6 previous errors Some errors have detailed explanations: E0499, E0502, E0505. For more information about an error, try `rustc --explain E0499`.