1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
// 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];
}
|