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));
28 assert!(value_in(&3, &set));
29 assert!(value_in(&5, &set));
30
31 assert!(!value_in(&0, &set));
32 assert!(!value_in(&6, &set));
33 assert!(!value_in(&10, &set));
34
35 let empty_set: [i32; 0] = [];
36 assert!(!value_in(&1, &empty_set));
37 }
38
39 #[test]
40 fn test_value_in_strings() {
41 let set = ["hello", "world", "test"];
42
43 assert!(value_in(&"hello", &set));
44 assert!(value_in(&"world", &set));
45 assert!(value_in(&"test", &set));
46 assert!(!value_in(&"not_in_set", &set));
47 }
48
49 #[test]
50 fn test_find_any() {
51 let input = [1, 2, 3, 4, 5, 6];
52 let check_set = [3, 7, 9];
53
54 let result = find_any(&input, &check_set);
55 assert!(result.is_some());
56 let (value, index) = result.unwrap();
57 assert_eq!(*value, 3);
58 assert_eq!(index, 2);
59 }
60
61 #[test]
62 fn test_find_any_not_found() {
63 let input = [1, 2, 3, 4, 5];
64 let check_set = [6, 7, 8];
65
66 let result = find_any(&input, &check_set);
67 assert!(result.is_none());
68 }
69
70 #[test]
71 fn test_find_any_empty_input() {
72 let input: [i32; 0] = [];
73 let check_set = [1, 2, 3];
74
75 let result = find_any(&input, &check_set);
76 assert!(result.is_none());
77 }
78
79 #[test]
80 fn test_find_any_empty_check_set() {
81 let input = [1, 2, 3, 4, 5];
82 let check_set: [i32; 0] = [];
83
84 let result = find_any(&input, &check_set);
85 assert!(result.is_none());
86 }
87
88 #[test]
89 fn test_find_any_first_match() {
90 let input = [1, 2, 3, 4, 5];
91 let check_set = [2, 3, 4];
92
93 let result = find_any(&input, &check_set);
94 assert!(result.is_some());
95 let (value, index) = result.unwrap();
96 assert_eq!(*value, 2);
97 assert_eq!(index, 1);
98 }
99
100 #[test]
101 fn test_find_any_strings() {
102 let input = ["hello", "world", "test", "rust"];
103 let check_set = ["test", "python"];
104
105 let result = find_any(&input, &check_set);
106 assert!(result.is_some());
107 let (value, index) = result.unwrap();
108 assert_eq!(*value, "test");
109 assert_eq!(index, 2);
110 }
111}