]> git.lizzy.rs Git - rust.git/blob - src/test/ui/or-patterns/bindings-runpass-2.rs
Rollup merge of #80269 - pickfire:patch-4, r=joshtriplett
[rust.git] / src / test / ui / or-patterns / bindings-runpass-2.rs
1 // run-pass
2
3 fn or_at(x: Result<u32, u32>) -> u32 {
4     match x {
5         Ok(x @ 4) | Err(x @ (6 | 8)) => x,
6         Ok(x @ 1 | x @ 2) => x,
7         Err(x @ (0..=10 | 30..=40)) if x % 2 == 0 => x + 100,
8         Err(x @ 0..=40) => x + 200,
9         _ => 500,
10     }
11 }
12
13 fn main() {
14     assert_eq!(or_at(Ok(1)), 1);
15     assert_eq!(or_at(Ok(2)), 2);
16     assert_eq!(or_at(Ok(3)), 500);
17     assert_eq!(or_at(Ok(4)), 4);
18     assert_eq!(or_at(Ok(5)), 500);
19     assert_eq!(or_at(Ok(6)), 500);
20     assert_eq!(or_at(Err(1)), 201);
21     assert_eq!(or_at(Err(2)), 102);
22     assert_eq!(or_at(Err(3)), 203);
23     assert_eq!(or_at(Err(4)), 104);
24     assert_eq!(or_at(Err(5)), 205);
25     assert_eq!(or_at(Err(6)), 6);
26     assert_eq!(or_at(Err(7)), 207);
27     assert_eq!(or_at(Err(8)), 8);
28     assert_eq!(or_at(Err(20)), 220);
29     assert_eq!(or_at(Err(50)), 500);
30 }