]> git.lizzy.rs Git - rust.git/blob - tests/ui/borrowck/borrowck-move-out-from-array-use.rs
Rollup merge of #106726 - cmorin6:fix-comment-typos, r=Nilstrieb
[rust.git] / tests / ui / borrowck / borrowck-move-out-from-array-use.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     let [_, _, _x] = a;
10     let [.., ref _y] = a; //~ ERROR [E0382]
11 }
12
13 fn move_out_from_begin_field_and_end() {
14     let a = array();
15     let [_, _, (_x, _)] = a;
16     let [.., ref _y] = a; //~ ERROR [E0382]
17 }
18
19 fn move_out_from_begin_field_and_end_field() {
20     let a = array();
21     let [_, _, (_x, _)] = a;
22     let [.., (ref _y, _)] = a; //~ ERROR [E0382]
23 }
24
25 // Const Index + Slice
26
27 fn move_out_by_const_index_and_subslice() {
28     let a = array();
29     let [_x, _, _] = a;
30     let [ref _y @ .., _, _] = a; //~ ERROR [E0382]
31 }
32
33 fn move_out_by_const_index_end_and_subslice() {
34     let a = array();
35     let [.., _x] = a;
36     let [_, _, ref _y @ ..] = a; //~ ERROR [E0382]
37 }
38
39 fn move_out_by_const_index_field_and_subslice() {
40     let a = array();
41     let [(_x, _), _, _] = a;
42     let [ref _y @ .., _, _] = a; //~ ERROR [E0382]
43 }
44
45 fn move_out_by_const_index_end_field_and_subslice() {
46     let a = array();
47     let [.., (_x, _)] = a;
48     let [_, _, ref _y @ ..] = a; //~ ERROR [E0382]
49 }
50
51 fn move_out_by_subslice_and_const_index_field() {
52     let a = array();
53     let [_y @ .., _, _] = a;
54     let [(ref _x, _), _, _] = a; //~ ERROR [E0382]
55 }
56
57 fn move_out_by_subslice_and_const_index_end_field() {
58     let a = array();
59     let [_, _, _y @ ..] = a;
60     let [.., (ref _x, _)] = a; //~ ERROR [E0382]
61 }
62
63 // Slice + Slice
64
65 fn move_out_by_subslice_and_subslice() {
66     let a = array();
67     let [x @ .., _] = a;
68     let [_, ref _y @ ..] = a; //~ ERROR [E0382]
69 }
70
71 // Move + Assign
72
73 fn move_out_and_assign_end() {
74     let mut a = array();
75     let [_, _, _x] = a;
76     a[2] = Default::default(); //~ ERROR [E0382]
77 }
78
79 fn move_out_and_assign_end_field() {
80     let mut a = array();
81     let [_, _, (_x, _)] = a;
82     a[2].1 = Default::default(); //~ ERROR [E0382]
83 }
84
85 fn move_out_slice_and_assign_end() {
86     let mut a = array();
87     let [_, _, _x @ ..] = a;
88     a[0] = Default::default(); //~ ERROR [E0382]
89 }
90
91 fn move_out_slice_and_assign_end_field() {
92     let mut a = array();
93     let [_, _, _x @ ..] = a;
94     a[0].1 = Default::default(); //~ ERROR [E0382]
95 }
96
97 fn main() {}