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