#![allow(unused_variables)] struct Zeroes; const ARR: [usize; 2] = [0; 2]; const ARR2: [usize; 2] = [2; 2]; impl Into<&'static [usize; 2]> for Zeroes { fn into(self) -> &'static [usize; 2] { &ARR } } impl Into<&'static [usize]> for Zeroes { fn into(self) -> &'static [usize] { &ARR2 } } fn let_decl() { let &[a, b] = Zeroes.into(); } fn let_else() { let &[a, b] = Zeroes.into() else { //~^ ERROR type annotations needed unreachable!(); }; } fn if_let() { if let &[a, b] = Zeroes.into() { //~^ ERROR type annotations needed unreachable!(); } } fn if_let_else() { if let &[a, b] = Zeroes.into() { //~^ ERROR type annotations needed unreachable!(); } else { unreachable!(); } } fn main() {}