error[E0499]: cannot borrow `x` (via `x.b`) as mutable more than once at a time --> $DIR/issue-17263.rs:17:34 | LL | let (a, b) = (&mut x.a, &mut x.b); | --- ^^^ second mutable borrow occurs here (via `x.b`) | | | first mutable borrow occurs here (via `x.a`) ... LL | } | - first borrow ends here error[E0502]: cannot borrow `foo` (via `foo.b`) as immutable because `foo` is also borrowed as mutable (via `foo.a`) --> $DIR/issue-17263.rs:21:32 | LL | let (c, d) = (&mut foo.a, &foo.b); | ----- ^^^^^ immutable borrow occurs here (via `foo.b`) | | | mutable borrow occurs here (via `foo.a`) LL | //~^ ERROR cannot borrow `foo` (via `foo.b`) as immutable LL | } | - mutable borrow ends here error: aborting due to 2 previous errors Some errors occurred: E0499, E0502. For more information about an error, try `rustc --explain E0499`.