use nar_dev_utils::matches_or;
let g = |a| matches_or!(a, i @ 1.. => [i+1], [0]);
assert_eq!(g(1), [2]);
assert_eq!(g(2), [3]);
assert_eq!(g(3), [4]);
assert_eq!(g(0), [0]);
assert_eq!(matches_or!(1, 1 => 1, 2), 1);
assert_eq!(matches_or!(2, x if x < 1 => 1, 2), 2);
assert_eq!(matches_or!(Some(1), None => 1, 2), 2);
assert_eq!(matches_or!((1, 2, 3), (.., 3) => 1, 2), 1);
assert_eq!(matches_or!((1, 2, 3), (.., x) if x > 3 => 1, 2), 2);
assert_eq!(matches_or!(?[2, 2], [1..=2, _] => 1), Some(1));
assert_eq!(matches_or!(?[2, 2], [.., 1] | [1, ..] => 1), None);
let f = |a| {
matches_or! {
a,
(1, 2, 3) => 1,
(1, 2, 4) => 2,
(1, 2, 5) => 3;
0
}
};
assert_eq!(f((1, 2, 3)), 1);
assert_eq!(f((1, 2, 4)), 2);
assert_eq!(f((1, 2, 5)), 3);
assert_eq!(f((0, 0, 0)), 0);