]> git.proxmox.com Git - rustc.git/blob - src/test/ui/borrowck/borrowck-move-out-from-array-match.rs
New upstream version 1.48.0~beta.8+dfsg1
[rustc.git] / src / test / ui / borrowck / borrowck-move-out-from-array-match.rs
1 fn array() -> [(String, String); 3] {
2 Default::default()
3 }
4
5 // Const Index + Const Index
6
7 fn move_out_from_begin_and_end() {
8 let a = array();
9 match a {
10 [_, _, _x] => {}
11 }
12 match a {
13 [.., _y] => {} //~ ERROR use of moved value
14 }
15 }
16
17 fn move_out_from_begin_field_and_end() {
18 let a = array();
19 match a {
20 [_, _, (_x, _)] => {}
21 }
22 match a {
23 [.., _y] => {} //~ ERROR use of partially moved value
24 }
25 }
26
27 fn move_out_from_begin_field_and_end_field() {
28 let a = array();
29 match a {
30 [_, _, (_x, _)] => {}
31 }
32 match a {
33 [.., (_y, _)] => {} //~ ERROR use of moved value
34 }
35 }
36
37 // Const Index + Slice
38
39 fn move_out_by_const_index_and_subslice() {
40 let a = array();
41 match a {
42 [_x, _, _] => {}
43 }
44 match a {
45 //~^ ERROR use of partially moved value
46 [_y @ .., _, _] => {}
47 }
48 }
49
50 fn move_out_by_const_index_end_and_subslice() {
51 let a = array();
52 match a {
53 [.., _x] => {}
54 }
55 match a {
56 //~^ ERROR use of partially moved value
57 [_, _, _y @ ..] => {}
58 }
59 }
60
61 fn move_out_by_const_index_field_and_subslice() {
62 let a = array();
63 match a {
64 [(_x, _), _, _] => {}
65 }
66 match a {
67 //~^ ERROR use of partially moved value
68 [_y @ .., _, _] => {}
69 }
70 }
71
72 fn move_out_by_const_index_end_field_and_subslice() {
73 let a = array();
74 match a {
75 [.., (_x, _)] => {}
76 }
77 match a {
78 //~^ ERROR use of partially moved value
79 [_, _, _y @ ..] => {}
80 }
81 }
82
83 fn move_out_by_subslice_and_const_index_field() {
84 let a = array();
85 match a {
86 [_y @ .., _, _] => {}
87 }
88 match a {
89 [(_x, _), _, _] => {} //~ ERROR use of moved value
90 }
91 }
92
93 fn move_out_by_subslice_and_const_index_end_field() {
94 let a = array();
95 match a {
96 [_, _, _y @ ..] => {}
97 }
98 match a {
99 [.., (_x, _)] => {} //~ ERROR use of moved value
100 }
101 }
102
103 // Slice + Slice
104
105 fn move_out_by_subslice_and_subslice() {
106 let a = array();
107 match a {
108 [x @ .., _] => {}
109 }
110 match a {
111 //~^ ERROR use of partially moved value
112 [_, _y @ ..] => {}
113 }
114 }
115
116 fn main() {}