]> git.proxmox.com Git - rustc.git/blob - src/test/ui/pattern/bindings-after-at/slice-patterns.rs
New upstream version 1.66.0+dfsg1
[rustc.git] / src / test / ui / pattern / bindings-after-at / slice-patterns.rs
1 // Test bindings-after-at with slice-patterns
2
3 // run-pass
4
5
6 #[derive(Debug, PartialEq)]
7 enum MatchArm {
8 Arm(usize),
9 Wild,
10 }
11
12 fn test(foo: &[i32]) -> MatchArm {
13 match foo {
14 [bar @ .., n] if n == &5 => {
15 for i in bar {
16 assert!(i < &5);
17 }
18
19 MatchArm::Arm(0)
20 },
21 bar @ [x0, .., xn] => {
22 assert_eq!(x0, &1);
23 assert_eq!(x0, &1);
24 assert_eq!(xn, &4);
25 assert_eq!(bar, &[1, 2, 3, 4]);
26
27 MatchArm::Arm(1)
28 },
29 _ => MatchArm::Wild,
30 }
31 }
32
33 fn main() {
34 let foo = vec![1, 2, 3, 4, 5];
35
36 assert_eq!(test(&foo), MatchArm::Arm(0));
37 assert_eq!(test(&foo[..4]), MatchArm::Arm(1));
38 assert_eq!(test(&foo[0..1]), MatchArm::Wild);
39 }