rust/tests/ui/pattern/slice-array-infer.rs

28 lines
693 B
Rust

//@ check-pass
#![allow(unused_variables)]
#![feature(generic_arg_infer)]
struct Zeroes;
impl Into<&'static [usize; 3]> for Zeroes {
fn into(self) -> &'static [usize; 3] {
&[0; 3]
}
}
impl Into<[usize; 3]> for Zeroes {
fn into(self) -> [usize; 3] {
[0; 3]
}
}
fn main() {
let [a, b, c] = Zeroes.into();
let [d, e, f] = <Zeroes as Into<&'static [usize; 3]>>::into(Zeroes);
let &[g, h, i] = Zeroes.into();
let [j, k, l]: [usize; _] = Zeroes.into();
let [m, n, o]: &[usize; _] = Zeroes.into();
// check the binding mode of these patterns:
let _: &[usize] = &[a, b, c, g, h, i, j, k, l];
let _: &[&usize] = &[d, e, f, m, n, o];
}