Implement vet for fixed size arrays

This commit is contained in:
Nettika 2022-07-09 14:23:43 -07:00
parent 9881e3df6a
commit 59964356cb
2 changed files with 20 additions and 0 deletions

View file

@ -102,6 +102,14 @@ pub trait Vet {
}
}
impl<T: Vet, const N: usize> Vet for [T; N] {
type VetError = T::VetError;
fn is_valid(&self) -> Result<(), Self::VetError> {
self.iter().try_for_each(|i| i.is_valid())
}
}
impl<T: Vet> Vet for Option<T> {
type VetError = T::VetError;

View file

@ -26,6 +26,18 @@ fn vet_type() {
assert!(foo.is_valid().is_err());
}
#[test]
fn vet_array() {
let foo: [EvenUsize; 0] = [];
assert!(foo.is_valid().is_ok());
let foo = [EvenUsize(2), EvenUsize(4)];
assert!(foo.is_valid().is_ok());
let foo = [EvenUsize(12), EvenUsize(0), EvenUsize(5)];
assert!(foo.is_valid().is_err());
}
#[test]
fn vet_option() {
let foo = None::<EvenUsize>;