Implement vet for fixed size arrays
This commit is contained in:
parent
54db766751
commit
713e8f4d96
2 changed files with 20 additions and 0 deletions
|
|
@ -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> {
|
impl<T: Vet> Vet for Option<T> {
|
||||||
type VetError = T::VetError;
|
type VetError = T::VetError;
|
||||||
|
|
||||||
|
|
|
||||||
12
src/tests.rs
12
src/tests.rs
|
|
@ -26,6 +26,18 @@ fn vet_type() {
|
||||||
assert!(foo.is_valid().is_err());
|
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]
|
#[test]
|
||||||
fn vet_option() {
|
fn vet_option() {
|
||||||
let foo = None::<EvenUsize>;
|
let foo = None::<EvenUsize>;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue