serde_valid/validation/array/
min_items.rs1pub trait ValidateMinItems {
44 fn validate_min_items(&self, min_items: usize) -> Result<(), crate::MinItemsError>;
45}
46
47impl<T> ValidateMinItems for Vec<T> {
48 fn validate_min_items(&self, min_items: usize) -> Result<(), crate::MinItemsError> {
49 if min_items <= self.len() {
50 Ok(())
51 } else {
52 Err(crate::MinItemsError::new(min_items))
53 }
54 }
55}
56
57impl<T, const N: usize> ValidateMinItems for [T; N] {
58 fn validate_min_items(&self, min_items: usize) -> Result<(), crate::MinItemsError> {
59 if min_items <= self.len() {
60 Ok(())
61 } else {
62 Err(crate::MinItemsError::new(min_items))
63 }
64 }
65}
66
67#[cfg(test)]
68mod tests {
69 use super::*;
70
71 #[test]
72 fn test_validate_array_min_items_is_true() {
73 assert!(ValidateMinItems::validate_min_items(&[1, 2, 3], 3).is_ok());
74 }
75
76 #[test]
77 fn test_validate_array_min_items_is_false() {
78 assert!(ValidateMinItems::validate_min_items(&[1, 2, 3], 4).is_err());
79 }
80
81 #[test]
82 fn test_validate_array_min_items_vec_is_true() {
83 assert!(ValidateMinItems::validate_min_items(&vec!['a', 'b', 'c'], 3).is_ok());
84 }
85
86 #[test]
87 fn test_validate_array_min_items_array_is_true() {
88 assert!(ValidateMinItems::validate_min_items(&['a', 'b', 'c'], 3).is_ok());
89 }
90}