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        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}