Skip to main content

opensearch_dsl/util/
should_skip.rs

1use crate::{Map, Set};
2
3/// Trait to handle skippable queries or their values
4pub trait ShouldSkip {
5    /// Whether a query or a query value can be skipped
6    fn should_skip(&self) -> bool {
7        false
8    }
9
10    /// Inverse of the condition
11    fn should_keep(&self) -> bool {
12        !self.should_skip()
13    }
14}
15
16impl ShouldSkip for String {
17    fn should_skip(&self) -> bool {
18        self.trim().is_empty()
19    }
20}
21
22impl ShouldSkip for str {
23    fn should_skip(&self) -> bool {
24        self.trim().is_empty()
25    }
26}
27
28impl ShouldSkip for &str {
29    fn should_skip(&self) -> bool {
30        self.trim().is_empty()
31    }
32}
33
34impl<T> ShouldSkip for Option<T> {
35    fn should_skip(&self) -> bool {
36        self.is_none()
37    }
38}
39
40impl<T> ShouldSkip for &Option<T> {
41    fn should_skip(&self) -> bool {
42        self.is_none()
43    }
44}
45
46impl<T> ShouldSkip for Vec<T> {
47    fn should_skip(&self) -> bool {
48        self.is_empty()
49    }
50}
51
52impl<T> ShouldSkip for Set<T> {
53    fn should_skip(&self) -> bool {
54        self.is_empty()
55    }
56}
57
58impl<T> ShouldSkip for &Set<T> {
59    fn should_skip(&self) -> bool {
60        self.is_empty()
61    }
62}
63
64impl<T> ShouldSkip for &[T] {
65    fn should_skip(&self) -> bool {
66        self.is_empty()
67    }
68}
69
70impl<K, V> ShouldSkip for Map<K, V> {
71    fn should_skip(&self) -> bool {
72        self.is_empty()
73    }
74}
75
76impl<K, V> ShouldSkip for &Map<K, V> {
77    fn should_skip(&self) -> bool {
78        self.is_empty()
79    }
80}