]> git.proxmox.com Git - rustc.git/blob - src/test/ui/for-loop-while/while-let.rs
New upstream version 1.38.0+dfsg1
[rustc.git] / src / test / ui / for-loop-while / while-let.rs
1 // run-pass
2
3 use std::collections::BinaryHeap;
4
5 fn make_pq() -> BinaryHeap<isize> {
6 BinaryHeap::from(vec![1,2,3])
7 }
8
9 pub fn main() {
10 let mut pq = make_pq();
11 let mut sum = 0;
12 while let Some(x) = pq.pop() {
13 sum += x;
14 }
15 assert_eq!(sum, 6);
16
17 pq = make_pq();
18 sum = 0;
19 'a: while let Some(x) = pq.pop() {
20 sum += x;
21 if x == 2 {
22 break 'a;
23 }
24 }
25 assert_eq!(sum, 5);
26
27 pq = make_pq();
28 sum = 0;
29 'a2: while let Some(x) = pq.pop() {
30 if x == 3 {
31 continue 'a2;
32 }
33 sum += x;
34 }
35 assert_eq!(sum, 3);
36
37 let mut pq1 = make_pq();
38 sum = 0;
39 while let Some(x) = pq1.pop() {
40 let mut pq2 = make_pq();
41 while let Some(y) = pq2.pop() {
42 sum += x * y;
43 }
44 }
45 assert_eq!(sum, 6 + 12 + 18);
46 }