simple_datetime_rs/utils/
parse_util.rs

1pub 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        // Test values in set
28        assert!(value_in(&1, &set));
29        assert!(value_in(&3, &set));
30        assert!(value_in(&5, &set));
31        
32        // Test values not in set
33        assert!(!value_in(&0, &set));
34        assert!(!value_in(&6, &set));
35        assert!(!value_in(&10, &set));
36        
37        // Test empty set
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        // Should find 3 at index 2
58        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        // Should not find anything
71        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        // Should find 2 at index 1 (first match)
99        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}