simple_datetime_rs/utils/
parse_util.rs1pub fn find_any<'a, 'b, T: PartialEq>(
2 input: &'a [T],
3 check_set: &'b [T],
4) -> Option<(&'a T, usize)> {
5 for i in 0..input.len() {
6 if value_in(&input[i], check_set) {
7 return Some((&input[i], i));
8 }
9 }
10 None
11}
12#[inline]
13pub fn value_in<T: PartialEq>(value: &T, set: &[T]) -> bool {
14 for v in set {
15 if v == value {
16 return true;
17 }
18 }
19 false
20}
21
22#[cfg(test)]
23mod tests {
24 use super::*;
25
26 #[test]
27 fn test_value_in() {
28 let set = [1, 2, 3, 4, 5];
29
30 assert!(value_in(&1, &set));
31 assert!(value_in(&3, &set));
32 assert!(value_in(&5, &set));
33
34 assert!(!value_in(&0, &set));
35 assert!(!value_in(&6, &set));
36 assert!(!value_in(&10, &set));
37
38 let empty_set: [i32; 0] = [];
39 assert!(!value_in(&1, &empty_set));
40 }
41
42 #[test]
43 fn test_value_in_strings() {
44 let set = ["hello", "world", "test"];
45
46 assert!(value_in(&"hello", &set));
47 assert!(value_in(&"world", &set));
48 assert!(value_in(&"test", &set));
49 assert!(!value_in(&"not_in_set", &set));
50 }
51
52 #[test]
53 fn test_find_any() {
54 let input = [1, 2, 3, 4, 5, 6];
55 let check_set = [3, 7, 9];
56
57 let result = find_any(&input, &check_set);
58 assert!(result.is_some());
59 let (value, index) = result.unwrap();
60 assert_eq!(*value, 3);
61 assert_eq!(index, 2);
62 }
63
64 #[test]
65 fn test_find_any_not_found() {
66 let input = [1, 2, 3, 4, 5];
67 let check_set = [6, 7, 8];
68
69 let result = find_any(&input, &check_set);
70 assert!(result.is_none());
71 }
72
73 #[test]
74 fn test_find_any_empty_input() {
75 let input: [i32; 0] = [];
76 let check_set = [1, 2, 3];
77
78 let result = find_any(&input, &check_set);
79 assert!(result.is_none());
80 }
81
82 #[test]
83 fn test_find_any_empty_check_set() {
84 let input = [1, 2, 3, 4, 5];
85 let check_set: [i32; 0] = [];
86
87 let result = find_any(&input, &check_set);
88 assert!(result.is_none());
89 }
90
91 #[test]
92 fn test_find_any_first_match() {
93 let input = [1, 2, 3, 4, 5];
94 let check_set = [2, 3, 4];
95
96 let result = find_any(&input, &check_set);
97 assert!(result.is_some());
98 let (value, index) = result.unwrap();
99 assert_eq!(*value, 2);
100 assert_eq!(index, 1);
101 }
102
103 #[test]
104 fn test_find_any_strings() {
105 let input = ["hello", "world", "test", "rust"];
106 let check_set = ["test", "python"];
107
108 let result = find_any(&input, &check_set);
109 assert!(result.is_some());
110 let (value, index) = result.unwrap();
111 assert_eq!(*value, "test");
112 assert_eq!(index, 2);
113 }
114}