]> git.proxmox.com Git - rustc.git/blame - src/test/ui/closures/2229_closure_analysis/run_pass/filter-on-struct-member.rs
Update unsuspicious file list
[rustc.git] / src / test / ui / closures / 2229_closure_analysis / run_pass / filter-on-struct-member.rs
CommitLineData
136023e0 1// edition:2021
fc512014
XL
2// run-pass
3
4// Test disjoint capture within an impl block
5
fc512014
XL
6struct Filter {
7 div: i32,
8}
9impl Filter {
10 fn allowed(&self, x: i32) -> bool {
11 x % self.div == 1
12 }
13}
14
15struct Data {
16 filter: Filter,
17 list: Vec<i32>,
18}
19impl Data {
20 fn update(&mut self) {
21 // The closure passed to filter only captures self.filter,
22 // therefore mutating self.list is allowed.
23 self.list.retain(
24 |v| self.filter.allowed(*v),
25 );
26 }
27}
28
29fn main() {
30 let mut d = Data { filter: Filter { div: 3 }, list: Vec::new() };
31
32 for i in 1..10 {
33 d.list.push(i);
34 }
35
36 d.update();
37}