1use crate::ArrayRef;
5
6pub trait Matcher {
8 type Match<'a>;
9
10 #[inline]
12 fn matches(array: &ArrayRef) -> bool {
13 Self::try_match(array).is_some()
14 }
15
16 fn try_match(array: &ArrayRef) -> Option<Self::Match<'_>>;
18}
19
20#[derive(Debug)]
22pub struct AnyArray;
23
24impl Matcher for AnyArray {
25 type Match<'a> = &'a ArrayRef;
26
27 #[inline(always)]
28 fn matches(_array: &ArrayRef) -> bool {
29 true
30 }
31
32 #[inline(always)]
33 fn try_match(array: &ArrayRef) -> Option<Self::Match<'_>> {
34 Some(array)
35 }
36}