1 error[E0308]: mismatched types
2 --> $DIR/issue-102892.rs:15:26
4 LL | let (a, b): (A, B) = &**arc; // suggests putting `&**arc` here too
5 | ------ ^^^^^^ expected tuple, found `&(A, B)`
9 = note: expected tuple `(A, B)`
10 found reference `&(A, B)`
11 help: consider removing the borrow
13 LL - let (a, b): (A, B) = &**arc; // suggests putting `&**arc` here too
14 LL + let (a, b): (A, B) = **arc; // suggests putting `&**arc` here too
16 help: alternatively, consider changing the type annotation
18 LL | let (a, b): &(A, B) = &**arc; // suggests putting `&**arc` here too
21 error[E0308]: mismatched types
22 --> $DIR/issue-102892.rs:20:32
24 LL | let (a, b): ((A, B), A) = (&mut *mutation, &(**arc).0); // suggests putting `&**arc` here too
25 | ^^^^^^^^^^^^^^ expected tuple, found `&mut (A, B)`
27 = note: expected tuple `(A, B)`
28 found mutable reference `&mut (A, B)`
29 help: consider removing the borrow
31 LL - let (a, b): ((A, B), A) = (&mut *mutation, &(**arc).0); // suggests putting `&**arc` here too
32 LL + let (a, b): ((A, B), A) = (*mutation, &(**arc).0); // suggests putting `&**arc` here too
34 help: alternatively, consider changing the type annotation
36 LL | let (a, b): (&mut (A, B), A) = (&mut *mutation, &(**arc).0); // suggests putting `&**arc` here too
39 error[E0308]: mismatched types
40 --> $DIR/issue-102892.rs:20:48
42 LL | let (a, b): ((A, B), A) = (&mut *mutation, &(**arc).0); // suggests putting `&**arc` here too
43 | ^^^^^^^^^^ expected struct `A`, found `&A`
45 help: consider removing the borrow
47 LL - let (a, b): ((A, B), A) = (&mut *mutation, &(**arc).0); // suggests putting `&**arc` here too
48 LL + let (a, b): ((A, B), A) = (&mut *mutation, (**arc).0); // suggests putting `&**arc` here too
50 help: alternatively, consider changing the type annotation
52 LL | let (a, b): ((A, B), &A) = (&mut *mutation, &(**arc).0); // suggests putting `&**arc` here too
55 error: aborting due to 3 previous errors
57 For more information about this error, try `rustc --explain E0308`.