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